Capistrano v3任务无法启动unicorn服务器,错误“eval:bundle not found”

时间:2014-01-23 12:05:55

标签: ruby-on-rails capistrano unicorn capistrano3

我正在使用Capistrano v3使用带有nginx的独角兽将rails 4应用程序部署到VPS。

根据capistrano最新的官方文档,我设法设置了与部署本身相关的所有内容:

我使用宝石'capistrano','capistrano-bundler','capistrano-rails'和'capistrano-rvm',当我cap production deploy时,一切似乎都没有任何错误消息(存储库已被拉出)从github并在服务器上复制,资产是预编译的,等等。)

此时如果我通过ssh连接到服务器并输入/etc/init.d/unicorn start,服务器将按预期启动,为我的rails应用程序提供服务。

但是,我创建了一个使用capistrano v3自动完成此任务的任务,如下所示:

namespace :unicorn do

  desc 'Start Unicorn'
  task :start do
    on roles(:app) do
      within current_path do
        execute "/etc/init.d/unicorn start"
      end
    end
  end

  desc 'Stop Unicorn'
  task :stop do
    on roles(:app) do
      within current_path do
        execute "/etc/init.d/unicorn stop"
      end
    end
  end

end

但每当我尝试capistrano deploy unicorn:start时,我都会收到以下错误:

/etc/init.d/unicorn: 1: eval: bundle: not found
cap aborted!
/etc/init.d/unicorn start stdout: Nothing written
/etc/init.d/unicorn start stderr: Nothing written

更奇怪的是,当我手动启动独角兽然后执行cap production unicorn:stop时,它可以无缝地工作。

我在通过ssh登录时怀疑可用环境变量存在一些差异所以我将'rvm_bin_path','path'和'gem_path'配置为与服务器上的相同但我仍然得到相同的错误。

我的想法已经用完了,有人知道是什么原因引起的吗?

干杯。

1 个答案:

答案 0 :(得分:0)

在部署服务器rvm1-capistrano3上使用rvm时,可以节省您的时间。您可以使用this模板作为操作方法