Ruby on rails rails/capistrano-编译资源时出错

Ruby on rails rails/capistrano-编译资源时出错,ruby-on-rails,ruby-on-rails-3,capistrano,Ruby On Rails,Ruby On Rails 3,Capistrano,当我使用capistrano部署时,当capistrano尝试运行assets:precompile时,我会收到一个错误(并回滚) 我使用的是rails 3.2.1、bundler 1.0.22、capistrano 2.11.2 如果我运行rake assets:precompilefrom/webapps/myapp/current,它将成功运行 错误: failed: "sh -c 'cd /webapps/myapp/releases/20120304160347 &&

当我使用capistrano部署时,当capistrano尝试运行assets:precompile时,我会收到一个错误(并回滚)

我使用的是rails 3.2.1、bundler 1.0.22、capistrano 2.11.2

如果我运行rake assets:precompilefrom/webapps/myapp/current,它将成功运行

错误:

failed: "sh -c 'cd /webapps/myapp/releases/20120304160347 && bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile'"
deploy.rb

require "bundler/capistrano"
load 'deploy/assets'
set :application, "myapp"
set :domain, '24.17.71.95'
set :repository,  "." 
set :deploy_via, :copy
set :local_repository, '/home/me/myapp/.git'
set :deploy_to, '/webapps/myapp/'
set :scm, :none #:git
set :user, 'me'
set :password, 'me$pw'
# Or: `accurev`, `bzr`, `cvs`, `darcs`, `git`, `mercurial`, `perforce`, `subversion` or `none`
default_run_options[:pty] = true 
role :web, domain                       # Your HTTP server, Apache/etc
role :app, domain                          # This may be the same as your `Web` server
role :db, domain, :primary => true # This is where Rails migrations will run
set :branch, 'master'
# if you're still using the script/reaper helper you will need
# these http://github.com/rails/irs_process_scripts
before "deploy:assets:precompile", "bundle:install"
# If you are using Passenger mod_rails uncomment this:
 namespace :deploy do
   task :start do ; end
   task :stop do ; end
   task :restart, :roles => :app, :except => { :no_release => true } do
     run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
   end
 end

据我所知,资产预编译任务应该是正在执行的最后一个(甚至最后一个)任务之一

所以请试着移动

load 'deploy/assets'
从deploy.rb中取出并粘贴到Capfile(Rails应用程序的根文件夹)中,并将其粘贴为文件的最后一行

看看我对你的回答


如果失败,请尝试

中的建议。请包含更多来自cap部署的输出。可以,只要一两分钟。如果您使用ssh连接到服务器并准确执行cd/webapps/myapp/current&&bundle exec rake RAILS\u ENV=production RAILS\u GROUPS=assets assets:precompile,会发生什么?我认为这不是一个好主意。这是一个需要部署的任务(这就是为什么它属于deploy.rb),而不是一个与Capistrano相关的配置(当您将它放入Capfile时)。这解决了我遇到的一个类似问题,在我的任何源代码中都找不到rake。为什么这样做有效?