2

Capistrano v3 を使用して、nginx でユニコーンを使用して Rails 4 アプリを VPS にデプロイしています。

カピストラーノの最新の公式ドキュメントに従って、展開自体に関連するすべてをセットアップすることができました。

私は宝石「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」をサーバーと同じになるように構成しましたが、それでも同じエラーが発生します。

私はアイデアが不足しています、誰がこれを引き起こす可能性があるか知っていますか?

乾杯。

4

1 に答える 1