Como obter / usr / bin / env ruby para apontar para o ambiente ruby correto?

6

Então eu estava fazendo um script cgi ruby e tinha o seguinte no topo do arquivo de script:

#!/usr/bin/env ruby
 require 'rubygems'
 require 'action_pack'
 require 'cgi'

Após algumas horas sem receber o erro "/ usr / bin / env: ruby: Nenhum arquivo ou diretório" e pesquisa no google, eu desinstalei o meu sistema ruby 1.8.7 (eu também tinha o 1.9.3 instalado via rvm ) fazendo sudo apt-get purge ruby rubems . Eu ainda tenho o erro. Quando eu digito "which ruby", recebo /home/homeuser/.rvm/rubies/ruby-1.9.3-p194/bin/ruby . Alguém tem alguma idéia de como corrigir esse problema?

Aqui está o que echo $ PATH produz:

/home/homeuser/.rvm/gems/ruby-1.9.3-p194@rsoc326/bin:/home/homeuser/.rvm/gems/ruby-1.9.3-p194@global/bin:/home/homeuser/.rvm/rubies/ruby-1.9.3-p194/bin:/home/homeuser/.rvm/bin:/var/lib/gems/1.8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/homeuser/.rvm/bin

Eu tenho essa mesma configuração na minha área de trabalho e não tenho o mesmo problema.

    
por Nona 31.08.2012 / 03:00

2 respostas

5

/usr/bin/env ruby deve estar apontando para o ruby RVM.

Mas vamos verificar sua configuração

  1. Verifique o conteúdo do seu ~/.profile , ele deve conter algo como estas duas linhas:

    export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
    [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"  # This loads RVM
    
  2. Em segundo lugar, verifique sua versão ruby instalada:

    rvm list
    

    isso deve ser algo como o seguinte:

    rvm rubies
    
    =* ruby-1.9.3-p286 [ x86_64 ]
    
    # => - current
    # =* - current && default
    #  * - default
    

    se não, tente executar rvm use 1.9.3 --default

  3. Ao tentar executar seu script como root, use rvmsudo ./yourscript.rb em vez de sudo ./yourscript.rb , isso garante que o $PATH esteja correto.

Deixe-me saber o resultado dos três passos acima.

    
por Koen. 29.10.2012 / 14:27
4

Adicionei #!/home/homeuser/.rvm/bin/ruby em vez de #!/usr/bin/env ruby . Então eu acho que isso significa que /usr/bin/env aponta para o sistema rubi, e não para qualquer rubm do rvm.

Problema resolvido, embora seja bom poder usar #!/usr/bin/env ruby para que eu possa mover meu script ruby de Desktop para Laptop sem precisar alterar #!/home/homeuser/.rvm/bin/ruby (caminho ligeiramente diferente em meu desktop devido ao nome de usuário diferente) . Talvez um link simbólico?

    
por Nona 31.08.2012 / 16:12