de tcurdt es un poco engañoso. En mi sistema acabo de configurar rvm (ree, 1.8.7, & 1.9.2 rubies) en el sistema como root. Mi/usr/local/bin veía así:
lrwxrwxrwx 1 root rvm 46 Mar 13 06:50 ree-1.8.7-2011.03 -> /usr/local/rvm/wrappers/ree-1.8.7-2011.03/ruby
lrwxrwxrwx 1 root rvm 44 Mar 13 06:42 ruby-1.8.7-p334 -> /usr/local/rvm/wrappers/ruby-1.8.7-p334/ruby
lrwxrwxrwx 1 root rvm 44 Mar 11 22:42 ruby-1.9.2-p180 -> /usr/local/rvm/wrappers/ruby-1.9.2-p180/ruby
no tenía un sistema de llamada gemset como en el ejemplo de tcurdt. Así que creo que el modo adecuado de alcanzar lo que está buscando sería así:
#!/usr/bin/env /usr/local/bin/ruby-1.9.2-p180
Algunos explicación de lo que está haciendo RVM aquí: RVM crea scripts de envolturas (/ usr///RVM envolturas locales/*) que establece cosas como GEM_PATH
& GEM_HOME
. Estos son necesarios para que las gemas se puedan cargar correctamente como parte de una versión específica de ruby. Los enlaces a estos scripts de envoltura se crean bajo /usr/local/bin
, cuando realiza una instalación del sistema de rvm. Si ha instalado rvm como usted, se encuentran aquí: $HOME/.rvm/bin
.
Es fundamental prefijar la línea shebang (#!/....) con el /usr/bin/env
. Si solo intentas dirigirlo directamente hacia un rubí (por ejemplo, #!/Usr/local/bin/ruby-1.9.2-p180) no será suficiente. Esto se debe a que estas envolturas no son en realidad el intérprete de Ruby, que son secuencias de comandos shell que este buscando una configuración del entorno antes de llamar a la secuencia de comandos como un argumento a la intérprete de Ruby, así:
source "/usr/local/rvm/environments/ruby-1.9.2-p180"
exec ruby "[email protected]"
la [email protected]
es su cáscara nombre de script que se pasa a ruby.
Finalmente aquí es un script de ejemplo que puse juntos, lo que corro en un directorio cgi-bin:
#!/usr/bin/env /usr/local/bin/ruby-1.9.2-p180
puts "Content-Type: text/html"
puts
puts "<html>"
puts "<body>"
puts "<h1>Hello Ruby!</h1>"
puts "<p>shebang: #!/usr/bin/env /usr/local/bin/ruby-1.9.2-p180</p>"
puts "<p>RUBY_VERSION: " + RUBY_VERSION + "</p>"
puts "<p>RUBY_PLATFORM: " + RUBY_PLATFORM + "</p>"
puts "<p>RUBY_RELEASE_DATE: " + RUBY_RELEASE_DATE + "</p>"
puts "</body>"
puts "</html>"
hmm, ninguno de mis sistemas tiene ningún rublo enlazado en/usr/local/bin – Kevin
¿quizás están en algún otro lugar en su sistema? – tcurdt