В даний час я намагаюся розгорнути свій проект 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"