0

現在、Rails 4 プロジェクトを capistrano でデプロイしようとしています。現時点では、サーバーはホストと同じですが、別のユーザーが使用されています。問題は、capistrano が RVM とローカル変数を同時に正しくロードしないことです。ローカル変数は/etc/profile.d/oracle.sh

set :default_shell, "bash -l"
set :rvm_ruby_string, "ruby-2.0.0-p0@rails4"
require "rvm/capistrano"
set :use_sudo: false
...
...
desc "tester"
task :tester, hosts: "localhost" do
  run "echo $TNS_ADMIN"
  run "ruby -v"
  run "gem list"
end

この設定を使用すると、次のようになります。

echo $TNS_ADMIN --> "correct path"
ruby -v --> 2.0.0p195 (wrong version)
gem list --> 5 gems (wrong)

を使用しない場合set :default_shell, "bash -l"、次のようになります。

echo $TNS_ADMIN --> "" (wrong)
ruby -v --> 2.0.0p0 (correct version)
gem list --> > 100 gems (correct)

を使用するset :default_shell, :bashと、次のようになります。

echo $TNS_ADMIN --> "" (wrong)
ruby -v --> 1.9.3p194 (wrong version = ruby version of the system)
gem list --> > 5 gems (wrong)

を使用しないと、両方の行 (と)set :rvm_ruby_stringを使用した場合と同じ間違った結果が得られます。set :default_shell, "bash -l"set :rvm_ruby_string, "..."

しかし、ローカル変数$TNS_ADMINセットと正しい ruby​​/gemset (2.0.0p0@rails with > 100 gems) が必要です。私は何を取りこぼしたか?

4

1 に答える 1

1

最初の行を削除します。

set :default_shell, "bash -l"

rvm-capistrano統合を無効にします。

変数は次の方法で読み取ることができます。

run "source  /etc/profile.d/oracle.sh; echo $TNS_ADMIN"
于 2013-06-11T19:20:59.317 に答える