Ошибка развертывания raise "не знаю, как построить задачу" assets:precompile " (Capistrano)

кто-нибудь когда-нибудь получил эту ошибку после запуска :

cap production deploy

Я использую capistrano: Capistrano версия: 3.6.1 (версия рейка: 11.3.0)

вот лог :

(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as deploy@54.169.99.36: rake exit status: 1
rake stdout: rake aborted!
Don't know how to build task 'assets:precompile' (see --tasks)
/home/deploy/microwave-api/shared/bundle/ruby/2.3.0/gems/rake-11.3.0/exe/rake:27:in `<top (required)>'
.
.
.
/home/deploy/.rvm/gems/ruby-2.3.0/gems/bundler-1.13.6/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/home/deploy/.rvm/gems/ruby-2.3.0/gems/bundler-1.13.6/lib/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command'
/home/deploy/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `<main>'
(See full trace by running task with --trace)
rake stderr: Nothing written

SSHKit::Command::Failed: rake exit status: 1
rake stdout: rake aborted!
Don't know how to build task 'assets:precompile' (see --tasks)enter code here

2 ответов


звучит так, как будто у вас, вероятно, нет звездочек (только приложение API?).

в вашем Capfile у вас, вероятно, есть что-то вроде:

require 'capistrano/rails'

эта строка на самом деле требуется файл который выглядит как:

require 'capistrano/rails/assets'
require 'capistrano/rails/migrations'

таким образом, вы можете заменить прежнюю строку просто:

require 'capistrano/rails/migrations'

и предварительная компиляция активов больше не будет выполняться.

как уже упоминалось выше, это предполагает, что вы на самом деле не хотите использовать конвейер активов. Если это не так, проблема в том, что вы не включаете звездочки, и вам нужно изучить это. Я бы сгенерировал новое приложение rails и сравнил ваш Gemfile и config/application.rb.


если приложение rails является только API, не добавляйте require 'capistrano/rails/assets' или require "capistrano/rails".

добавить следующее:

require 'capistrano/bundler'
require 'capistrano/rails/migrations'

в конце Ваш Capfile будет выглядеть примерно так:

require "capistrano/setup"
require "capistrano/deploy"

require "capistrano/scm/git"
install_plugin Capistrano::SCM::Git

require "capistrano/rbenv"
set :rbenv_type, :user
set :rbenv_ruby, "2.5.1"

require 'capistrano/bundler'
require 'capistrano/rails/migrations'

# Load custom tasks from `lib/capistrano/tasks` if you have any defined
Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r }