Como obter Ruby, quando chamado de um script de shell, para ver o Ruby padrão RVM

0

meu ruby prog:

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

o script bash (?) que o chama:

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

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

Eu estou supondo que esta é uma correção fácil - eu quero que o script chame o ruby que eu configurei como padrão com RVM - mas estou perplexo.

TIA

EDIT: a saída de info rv:

qe2user @ qe2server: ~ / Ruby / query_engine $ rvm info

ruby-1.9.3-p125:

sistema:     uname: "Linux qe2server 2.6.32-33-server # 70-Ubuntu SMP Qui Jul 7 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"

rubi:     intérprete: "rubi"     versão: "1.9.3p125"     data: "2012-02-16"     plataforma: "x86_64-linux"     patchlevel: "2012-02-16 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:     CAMINHO: "/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: ""

    
por davej 18.04.2012 / 03:21

1 resposta

1

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 com rvm use no prompt do shell.

Se você quiser usar algo diferente do padrão de dentro de um script, no entanto, você pode envolver seu script com outro script de shell que define o Ruby atual usando RVM. Se isso não for uma opção, você também pode chamar um intérprete específico diretamente em sua linha de shebang:

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

mas isso também pode exigir que você manipule algumas variáveis de ambiente, como MY_RUBY_HOME e RUBY_VERSION (consulte rvm info para obter uma lista completa) para que várias bibliotecas e gems funcionem.

Modificar o ambiente pode ou não ser necessário para você - muito depende do que seu script Ruby está fazendo - mas se for necessário, você pode jogar com várias opções no comando linha até que você tenha tudo funcionando 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 os arquivos .rvmrc do projeto. Esse é outro caminho para garantir que seu ambiente de trabalho esteja usando o Ruby e o gemset que você precisa para seu aplicativo em particular.

    
por 18.04.2012 / 04:04

Tags