如何从Capistrano部署脚本执行bundle命令

时间:2014-09-07 09:40:58

标签: ruby-on-rails ruby deployment capistrano

我想在部署后重新启动瘦Web服务器。为此,我在config/deploy.rb中有以下代码:

namespace :deploy do
desc 'Restart application...'
  task :restart do
    on roles(:app) do
      within "#{current_path}" do
        execute "bundle exec thin -C /etc/thin/app.yml restart"
      end
    end
  end
(...)

所以我想在当前路径文件夹中执行bundle exec thin -C /etc/thin/app.yml restart命令。

这会引发错误:

  

SSHKit :: Runner :: ExecuteError:在主机上执行时出现异常...:bundle exec thin -C /etc/thin/reboot.yml restart exit status:127

/ EDIT由于早期代码中的语法错误,显示了另一个错误。用户RAJ在下面的回答中找到了此错误

此任务出现相同的错误:

task :restart do
on roles(:app) do
  within "#{current_path}" do
    execute :bundle, "thin -C /etc/thin/reboot.yml restart"
  end
end

如何从部署脚本运行bundle?

1 个答案:

答案 0 :(得分:3)

如错误消息所示,您的within

缺少阻止。

试试这个:

within "#{current_path}" do
  execute "bundle exec thin -C /etc/thin/app.yml restart"
end

而不是

within "#{current_path}"
        execute "bundle exec thin -C /etc/thin/app.yml restart"