0

我制作了一个新的 Rails 3.2 应用程序。当我使用 Capistrano 部署它时,编译资产时出现错误。但是资产已编译,应用程序已按应有的方式部署。

在服务器上,我在系统范围内安装了 RVM,然后创建了:

User: skolemapicture  (added to group rvm)
Deploy folder: /home/skolemapicture/site
.rvmrc in /home/skolemapicture/site/.rvmrc

我的 deploy.rb 配置看起来像这样(省略了与问题无关的行)

set :application, "skolemapicture"

set :deploy_to                  , "/home/skolemapicture/site"
set :user                       , "skolemapicture"
set :use_sudo                   , false
ssh_options[:forward_agent] = true

require "bundler/capistrano"
require "rvm/capistrano"

set(:ruby_version)      { '1.9.3' }
set(:rvm_ruby_string)   { "#{ruby_version}@#{application}" }
set(:rvm_path)          { "/usr/local/rvm" }
set(:rvm_type)          { :system }

namespace :deploy do
  task :precompile, :role => :app do
    run "cd #{release_path}/ && bundle exec rake assets:precompile"
  end
end
after "deploy:finalize_update", "deploy:precompile"

我在“cap deploy”得到的错误是:

  * 2013-02-13 10:36:21 executing `deploy:precompile'
  * executing "cd /home/skolemapicture/site/releases/20130213093619/ && bundle exec rake assets:precompile"
    servers: ["web01.mapicture.com"]
    [web01.mapicture.com] executing command
*** [err :: web01.mapicture.com] /usr/local/rvm/rubies/ruby-1.9.3-p374/bin/ruby /home/skolemapicture/site/shared/bundle/ruby/1.9.1/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets
*** [err :: web01.mapicture.com] 

但资产已编译。那么为什么会出现这个错误呢?

/ 卡斯滕

4

1 回答 1

2

它可能实际上是使用您的自定义部署成功预编译资产:预编译任务。

它在 capistrano 默认 assets:precompile 任务上失败。

您会注意到失败的命令是

/usr/local/rvm/rubies/ruby-1.9.3-p374/bin/ruby /home/skolemapicture/site/shared/bundle/ruby/1.9.1/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets

不是您的自定义预编译任务:

cd #{release_path}/ && bundle exec rake assets:precompile

尝试删除您的 deploy:precompile 任务并添加

load 'deploy/assets'

到您的 Capfile(如果它不存在)。

如果这不能解决它,您可以发布您的整个 Capfile 和 deploy.rb 吗?

于 2013-03-05T05:13:09.353 回答