Ruby on rails RAILS_ENV=生产rake资产:预编译无法通过capistrano工作

Ruby on rails RAILS_ENV=生产rake资产:预编译无法通过capistrano工作,ruby-on-rails,ruby,capistrano,Ruby On Rails,Ruby,Capistrano,我在capistrano中设置了一个任务来执行预编译和db:migrate。出于某种原因,当我在服务器上手动运行这些任务时,它们工作得非常好,但是当它们运行于rake任务时,它们会给我错误 以下是capistrano的任务: after :restart, :clear_cache do on roles(:web), in: :groups, limit: 3, wait: 10 do execute "cd #{current_path}; RAILS_ENV=pro

我在capistrano中设置了一个任务来执行预编译和db:migrate。出于某种原因,当我在服务器上手动运行这些任务时,它们工作得非常好,但是当它们运行于rake任务时,它们会给我错误

以下是capistrano的任务:

  after :restart, :clear_cache do
    on roles(:web), in: :groups, limit: 3, wait: 10 do
      execute "cd #{current_path}; RAILS_ENV=production bundle exec rake assets:precompile"
      execute "cd '#{current_path}'; RAILS_ENV=production bundle exec rake db:migrate"
    end
  end
以下是错误:

    INFO [96002080] Running cd /var/www/html/FingertipRails/current; RAILS_ENV=production bundle exec rake assets:precompile on 50.112.106.148
DEBUG [96002080] Command: cd /var/www/html/FingertipRails/current; RAILS_ENV=production bundle exec rake assets:precompile
DEBUG [96002080]    bash: bundle: command not found
我曾尝试删除任务的
bundle exec
部分,但随后出现错误,表示没有安装gems(之前我明确运行过bundle install)


有什么想法吗?

您是否手动运行任务?它们是否作为Capistrano使用的同一用户运行?您可以使用
cap shell
,并通过shell运行
gem install bundler
Capistrano和manual都使用ec2 user。奇怪的是,当我手动登录并使用这些命令时,它们执行得非常好——它们只是在capistrano任务中弄乱了up@CDub显然,
cap shell
在capistrano 3中不可用:(以下是一些替代方案-