Comment faire en sorte que / usr / bin / env ruby ​​pointe vers le bon environnement ruby?

7

Donc, je faisais un script ruby ​​cgi et ce qui suit était en haut du fichier de script:

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

Après quelques heures à ne pas avoir l'erreur "/ usr / bin / env: ruby: aucun fichier ou répertoire" et la recherche sur Google, j'ai désinstallé mon système ruby ​​1.8.7 (j'ai également installé la version 1.9.3 via rvm) en faisant sudo apt-get purge ruby ​​rubygems . J'ai toujours l'erreur. Quand je tape "quel rubis", je reçois /home/homeuser/.rvm/rubies/ruby-1.9.3-p194/bin/ruby. Est-ce que quelqu'un a une idée sur la façon de résoudre ce problème?

Voici ce que echo $ PATH donne:

/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

J'ai la même configuration sur mon bureau et je n'ai pas le même problème.

Nona
la source

Réponses:

5

/usr/bin/env ruby devrait pointer vers le rubis RVM.

Mais permet de vérifier votre configuration

  1. Vérifiez le contenu de votre ~/.profile, il devrait contenir quelque chose comme ces 2 lignes:

    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. Deuxièmement, vérifiez votre version de ruby ​​installée:

    rvm list
    

    cela devrait produire quelque chose comme ce qui suit:

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

    sinon, essayez de courir rvm use 1.9.3 --default

  3. Lorsque vous essayez d’exécuter votre script en tant qu’utilisateur root, veillez à l’utiliser à la rvmsudo ./yourscript.rbplace de sudo ./yourscript.rb, afin de vous assurer qu’il est correct $PATH.

Faites-moi savoir le résultat des trois étapes ci-dessus.

Koen.
la source
4

J'ai ajouté #!/home/homeuser/.rvm/bin/rubyau lieu de #!/usr/bin/env ruby. Donc, je suppose que cela signifie que cela /usr/bin/envpointe vers le système ruby, et non vers aucun des rubis de la chaîne.

Problème résolu, bien que ce serait bien de pouvoir l'utiliser #!/usr/bin/env rubyafin de pouvoir déplacer mon script ruby ​​de bureau à ordinateur portable sans avoir à changer #!/home/homeuser/.rvm/bin/ruby(chemin légèrement différent sur mon bureau en raison d'un nom d'utilisateur différent). Peut-être un lien symbolique?

Nona
la source