Cómo hacer que Ruby, cuando se llama desde un script de shell, vea el Ruby predeterminado de RVM

Cómo hacer que Ruby, cuando se llama desde un script de shell, vea el Ruby predeterminado de RVM

mi programa rubí:

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

el script bash(?) que lo llama:

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

Instalé rvm, probando los modos "usuario único" y "multiusuario"; Tengo mi valor predeterminado configurado en 1.9.3p125, pero no importa lo que haga, cuando ejecuto esto, ejecuta 1.8.7, que evidentemente es la versión "del sistema" de Ruby.

Supongo que esto es una solución fácil: quiero que el script llame al Ruby que configuré como predeterminado con RVM, pero estoy perplejo.

tia

EDITAR: la salida de la información de rvm:

qe2user@qe2server:~/Ruby/query_engine$ información de rvm

rubí-1.9.3-p125:

sistema: uname: "Linux qe2server 2.6.32-33-server #70-Ubuntu SMP jueves 7 de julio 22:28:30 UTC 2011 x86_64 GNU/Linux" bash: "/bin/bash => GNU bash, versión 4.1.5 (1)-lanzamiento (x86_64-pc-linux-gnu)" zsh: " => no instalado"

rvm: versión: "rvm 1.12.3 (estable) por Wayne E. Seguin, Michal Papis [htps://rvm.io/]" actualizado: "Hace 13 horas 39 minutos 42 segundos"

ruby: intérprete: "ruby" versión: "1.9.3p125" fecha: "2012-02-16" plataforma: "x86_64-linux" nivel de parche: "2012-02-16 revisión 34643" versión_completa: "ruby 1.9.3p125 (2012) -02-16 revisión 34643) [x86_64-linux]"

casas: gema: "/usr/local/rvm/gems/ruby-1.9.3-p125" ruby: "/usr/local/rvm/rubies/ruby-1.9.3-p125"

binarios: 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" rastrillo: "/usr/local/rvm/gems/ruby-1.9.3-p125@global/bin/rake"

entorno: RUTA: "/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: "" conjunto de gemas: ""

Respuesta1

No parece que haya configurado correctamente su intérprete Ruby predeterminado en RVM. Por ejemplo, con un RVM correctamente instalado:

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

Esto garantizará que se utilice el Ruby especificado, en lugar del predeterminado del sistema. Puede cambiar el Ruby actual en cualquier momento desde rvm useel símbolo del shell.

Sin embargo, si desea utilizar algo distinto al valor predeterminado dentro de un script, puede envolver su script con otro script de shell que establezca el Ruby actual usando RVM. Si esa no es una opción, también puedes llamar a un intérprete específico directamente a tu línea shebang:

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

pero esto también puede requerir que modifiques algunas variables de entorno, como MY_RUBY_HOME y RUBY_VERSION (consulta rvm infopara obtener una lista completa) para que varias bibliotecas y gemas funcionen.

Modificar el entorno puede ser necesario o no para usted (mucho depende de lo que esté haciendo su script Ruby), pero siesSi es necesario, puedes jugar con varias opciones en la línea de comando hasta que todo funcione en conjunto. Por ejemplo:

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

Además, lea sobre el proyecto..rvmrcarchivos. Esta es otra vía para garantizar que su entorno de trabajo utilice Ruby y el conjunto de gemas que necesita para su aplicación particular.

información relacionada