/ / Неправильна версія ruby ​​/ gemset / локальної змінної з використанням capistrano - ruby-on-rails, rvm, середовище-змінні, capistrano, ruby-on-rails-4

Неправильна версія ruby ​​/ gemset / local змінної, використовуючи capistrano - ruby-on-rail, rvm, environment-variables, capistrano, ruby-on-rail-4

В даний час я намагаюся розгорнути свій проект 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 set і правильний ruby ​​/ gemset (2.0.0p0@rails з> 100 дорогоцінних каменів). Що я пропустив?

Відповіді:

1 для відповіді № 1

видалити перший рядок:

set :default_shell, "bash -l"

він вимикає rvm-capistrano інтеграції.

Ви можете прочитати змінну за допомогою:

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