【问题标题】:Wrong ruby/gemset/local variable version using capistrano使用 capistrano 的 ruby​​/gemset/局部变量版本错误
【发布时间】:2013-06-07 00:17:26
【问题描述】:

目前,我尝试使用 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 个宝石)。 我错过了什么?

【问题讨论】:

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


    【解决方案1】:

    删除第一行:

    set :default_shell, "bash -l"
    

    它禁用rvm-capistrano 集成。

    您可以通过以下方式读取变量:

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

    【讨论】:

    • 谢谢,它有效。是否有可能为大多数/每个运行命令获取此文件?也许,我将来需要一些其他变量。拥有与服务器用户相同的 ENV 会很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    相关资源
    最近更新 更多