Как заставить Ruby при вызове из скрипта оболочки увидеть RVM по умолчанию Ruby

Как заставить Ruby при вызове из скрипта оболочки увидеть RVM по умолчанию Ruby

моя рубиновая прога:

#echoHW.rb
while 1 < 2
  sleep(10)
  puts "hey!"
end

скрипт bash(?), который его вызывает:

#echoHW.sh
ruby -v
ruby echoHW.rb "$@" & 

Я установил rvm, попробовав и «однопользовательский», и «многопользовательский» режимы; у меня по умолчанию установлена ​​версия 1.9.3p125, но что бы я ни делал, при запуске запускается версия 1.8.7, которая, очевидно, является «системной» версией Ruby.

Думаю, это легко исправить — я хочу, чтобы скрипт вызывал Ruby, который я установил по умолчанию с помощью RVM, — но я в тупике.

ТИА

EDIT: вывод информации rvm:

qe2user@qe2server:~/Ruby/query_engine$ rvm информация

рубин-1.9.3-p125:

system: uname: "Linux qe2server 2.6.32-33-server #70-Ubuntu SMP Чт Июл 7 22:28:30 UTC 2011 x86_64 GNU/Linux" bash: "/bin/bash => GNU bash, версия 4.1.5(1)-release (x86_64-pc-linux-gnu)" zsh: " => не установлено"

rvm: версия: "rvm 1.12.3 (stable) от Wayne E. Seguin, Michal Papis [htps://rvm.io/]" обновлено: "13 часов 39 минут 42 секунды назад"

ruby: интерпретатор: "ruby" версия: "1.9.3p125" дата: "2012-02-16" платформа: "x86_64-linux" уровень исправления: "2012-02-16 ревизия 34643" полная_версия: "ruby 1.9.3p125 (2012-02-16 ревизия 34643) [x86_64-linux]"

дома: gem: "/usr/local/rvm/gems/ruby-1.9.3-p125" ruby: "/usr/local/rvm/rubies/ruby-1.9.3-p125"

двоичные файлы: ruby: "/usr/local/rvm/rubies/ruby-1.9.3-p125/bin/ruby" irb: "/usr/local/rvm/rubies/ruby-1.9.3-p125/bin/irb" gem: "/usr/local/rvm/rubies/ruby-1.9.3-p125/bin/gem" rake: "/usr/local/rvm/gems/ruby-1.9.3-p125@global/bin/rake"

среда: ПУТЬ: "/usr/local/rvm/gems/ruby-1.9.3-p125/bin:/usr/local/rvm/gems/ruby-1.9.3-p125@global/bin:/usr/local/rv /rubies/ruby-1.9.3-p125/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" GEM_HOME: "/usr/local/rvm/gems/ruby-1.9.3-p125" GEM_PATH: "/usr/local/rvm/gems/ruby-1.9.3-p125:/usr/local/rvm/gems/ruby-1.9.3-p125@global" MY_RUBY_HOME: "/usr/local/rvm/rubies/ruby-1.9.3-p125" IRBRC: "/usr/local/rvm/rubies/ruby-1.9.3-p125/.irbrc" RUBYOPT: "" gemset: ""

решение1

Похоже, вы не правильно настроили интерпретатор Ruby по умолчанию в RVM. Например, с правильно установленным RVM:

# Assumes that 1.9.3-p125 is already fully-installed under RVM.
rvm --default use ruby-1.9.3-p125

Это гарантирует, что будет использоваться указанный Ruby, а не системный по умолчанию. Вы можете изменить текущий Ruby в любое время с помощью rvm useприглашения оболочки.

Если вы хотите использовать что-то иное, чем значение по умолчанию, из скрипта, вы можете обернуть свой скрипт другим скриптом оболочки, который устанавливает текущий Ruby с помощью RVM. Если это не вариант, вы также можете вызвать определенный интерпретатор непосредственно в строке shebang:

#!/home/user/.rvm/rubies/ruby-1.9.3-p125/bin/ruby

Однако для этого вам также может потребоваться изменить некоторые переменные среды, такие как MY_RUBY_HOME и RUBY_VERSION ( rvm infoполный список см. здесь), чтобы заставить работать различные библиотеки и гемов.

Изменение среды может быть необходимым или не необходимым для вас — многое зависит от того, что делает ваш скрипт Ruby — но если это необходимоявляетсяесли необходимо, вы можете поиграть с различными опциями в командной строке, пока все не заработает. Например:

$ MY_RUBY_HOME=~/.rvm/rubies/ruby-1.9.3-p125 \
    ~/.rvm/rubies/ruby-1.9.3-p125/bin/ruby -e 'puts("hello")'
hello

Также читайте о проекте.rvmrcфайлы. Это еще один способ убедиться, что ваша рабочая среда использует Ruby и gemset, необходимые для вашего конкретного приложения.

Связанный контент