Como fazer com que Ruby, quando chamado a partir de um script de shell, veja o Ruby padrão do RVM

Como fazer com que Ruby, quando chamado a partir de um script de shell, veja o Ruby padrão do RVM

meu programa Ruby:

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

o script bash(?) que o chama:

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

Instalei o rvm, tentando os modos "usuário único" e "multiusuário"; Eu tenho meu padrão definido como 1.9.3p125, mas não importa o que eu faça, quando executo isso, ele executa 1.8.7, que evidentemente é a versão do "sistema" do Ruby.

Suponho que seja uma solução fácil - quero que o script chame o Ruby que defini como padrão com o RVM - mas estou perplexo.

TIA

EDIT: a saída de informações de rvm:

qe2user@qe2server:~/Ruby/query_engine$ informações de rvm

rubi-1.9.3-p125:

sistema: uname: "Linux qe2server 2.6.32-33-server #70-Ubuntu SMP Qui, 7 de julho 22:28:30 UTC 2011 x86_64 GNU/Linux" bash: "/bin/bash => GNU bash, versão 4.1.5 (1)-release (x86_64-pc-linux-gnu)" zsh: " => não instalado"

rvm: versão: "rvm 1.12.3 (estável) por Wayne E. Seguin, Michal Papis [htps://rvm.io/]" atualizado: "13 horas 39 minutos 42 segundos atrás"

ruby: intérprete: "ruby" versão: "1.9.3p125" data: "16/02/2012" plataforma: "x86_64-linux" patchlevel: "16/02/2012 revisão 34643" full_version: "ruby 1.9.3p125 (2012 -02-16 revisão 34643) [x86_64-linux]"

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

binários: 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"

ambiente: PATH: "/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: ""

Responder1

Não parece que você configurou seu interpretador Ruby padrão corretamente no RVM. Por exemplo, com um RVM instalado corretamente:

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

Isso garantirá que o Ruby especificado seja usado, em vez do padrão do sistema. Você pode alterar o Ruby atual a qualquer momento rvm useno prompt do shell.

Porém, se você quiser usar algo diferente do padrão dentro de um script, poderá agrupar seu script com outro script de shell que defina o Ruby atual usando RVM. Se isso não for uma opção, você também pode ligar para um intérprete específico diretamente na sua linha shebang:

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

mas isso também pode exigir que você altere algumas variáveis ​​de ambiente, como MY_RUBY_HOME e RUBY_VERSION (veja rvm infopara obter uma lista completa) para fazer com que várias bibliotecas e gemas funcionem.

Modificar o ambiente pode ou não ser necessário para você - depende muito do que seu script Ruby está fazendo - mas se forénecessário, você pode brincar com várias opções na linha de comando até que tudo funcione em conjunto. Por exemplo:

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

Além disso, leia sobre o projeto.rvmrcarquivos. Este é outro caminho para garantir que seu ambiente de trabalho esteja usando o Ruby e o gemset necessários para sua aplicação específica.

informação relacionada