使用capistrano的错误的ruby / gemset /局部变量版本

时间:2013-06-11 08:01:31

标签: ruby-on-rails rvm environment-variables capistrano ruby-on-rails-4

目前,我尝试使用capistrano部署我的Rails 4项目。目前,服务器与主机相同,但使用的是不同的用户。问题是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,带有> 100个宝石)。 我错过了什么?

1 个答案:

答案 0 :(得分:1)

删除第一行:

set :default_shell, "bash -l"

它会禁用rvm-capistrano集成。

您可以使用以下内容读取变量:

run "source  /etc/profile.d/oracle.sh; echo $TNS_ADMIN"