0

私が理解しているように、Capistranoが行うことは、サーバーにsshで接続し、必要なコマンドを実行することだけです(ほとんどの場合)。

私は過去数回のプロジェクトでrvmを使用しており、rvm-capistranogemをインストールする必要がありました。そうしないと、リポジトリに適切な.rvmrcファイル(正しいrubyと正しいgemsetが含まれている)があったとしても、実行可能ファイルを見つけることができませんでした(または思い出します)。

同様に、今日はpythonbrewを使用しているプロジェクトのデプロイを設定していましたが、単純な「cd#{deploy_to} / current && pythonbrew venv use myenv && gunicorn_django -c gunicorn.py」で、「実行可能なgunicorn_djangoが見つかりません」。これは、virtualenvが正しくアクティブ化されなかったためだと思います。しかし、「pythonbrew venv use myenv」を実行したときに、環境をアクティブ化しませんでしたか?サーバーにSSHで接続してシェルで実行すると、完全なコマンドは正常に機能しますが、Capistranoを介して実行すると機能しません。

私の質問は、Capistranoがsshを介していくつかのコマンドを実行しているにもかかわらず、rvmやpythonbrewなどのプログラムと一緒に再生するために変更が必要なのはなぜですか?

4

1 に答える 1

1

それは、それらのSSHがシェルの環境をアクティブ化しないためです。したがって、魔法を可能にするソースステートメントを取得しているわけではありません。CDが自動的にそれを取得すると想定する代わりに、コマンドを実行する前にrvmuse...を実行するだけです。それなら大丈夫なはずです。ファブリックを使用していた場合は、各コマンドの前に実行されることを確認するために使用できるenv()コンテキストマネージャーがあります。

于 2013-01-27T17:06:47.230 に答える