Сообщение Цурдта немного вводит в заблуждение.В моей системе я просто установил rvm (ree, 1.8.7 и 1.9.2 рубины) в системе как root.Мой / usr / local / bin выглядел так:
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
У меня не было гемсета с именем system, как в примере с tcurdt.Поэтому я считаю, что соответствующий способ достижения того, что вам нужно, будет выглядеть так:
#!/usr/bin/env /usr/local/bin/ruby-1.9.2-p180
Некоторое объяснение того, что делает здесь rvm: rvm создает сценарии упаковщиков (/ usr / local / rvm / wrappers /*) которые устанавливают такие вещи, как GEM_PATH
& GEM_HOME
.Это необходимо для правильной загрузки гемов как части конкретной версии ruby.Ссылки на эти сценарии-оболочки создаются в /usr/local/bin
, когда вы выполняете системную установку rvm.Если вы установили rvm от себя, они находятся здесь: $HOME/.rvm/bin
.
Очень важно поставить префикс строки shebang (#! / ....) с /usr/bin/env
.Если вы просто попытаетесь указать ему непосредственно на ruby (например, #! / Usr / local / bin / ruby-1.9.2-p180), этого будет недостаточно.Это связано с тем, что эти обертки на самом деле не являются интерпретатором ruby, они представляют собой сценарии оболочки, которые используют параметры среды перед вызовом сценария в качестве аргумента для интерпретатора ruby, например:
source "/usr/local/rvm/environments/ruby-1.9.2-p180"
exec ruby "$@"
$@
имя вашего скрипта оболочки передается в ruby.
Наконец, вот пример сценария, который я собрал, который я запускаю в каталоге 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>"