2016-01-11 5 views
1

Я использую Sensu для проверки клиентов Sensu.Как использовать shebang (#!), Чтобы использовать правильную версию Ruby

Я получаю эту ошибку, из-за версии Ruby, составляет менее 2,0:

syntax error, unexpected ',', expecting kEND 

У меня есть рубин 2.1.8 установлен с помощью RVM:

rvm use 2.1.8 
Using /home/jenkins/.rvm/gems/ruby-2.1.8 

Как я могу заставить interperter использовать правильную версию?

Я попытался с помощью хижину (#!) в верхней части файла различными способами:

  1. #!/home/jenkins/.rvm/gems/ruby-2.1.8 ruby
  2. "How to set the correct shebang for the needed Ruby version" не работает =>#!/usr/bin/env rvm 2.0 do ruby
  3. внутри сценария:

    source "/home/jenkins/.rvm/scripts/rvm" 
    rvm use "2.1.8" 
    

Любые другие предложения?

редактировать Благодаря @mudasobwa он работает, когда я запускаю его от пользователя Дженкинс с 2.1.8

[email protected]:~$ rvm use 2.1.8 
Using /home/jenkins/.rvm/gems/ruby-2.1.8 
[email protected]:~$ ruby check_disk_space.rb #works 
CheckDisk OK: All disk usage under 85% and inode usage under 85% 
[email protected]:~$ rvm use 1.8.7 
Using /home/jenkins/.rvm/gems/ruby-1.8.7-head 
[email protected]:~$ ruby check_disk_space.rb #doesn't work even though first row is #!/home/jenkins/.rvm/rubies/ruby-2.1.8/bin/ruby 
check_disk_space.rb:32: syntax error, unexpected ':', expecting kEND 
     short: '-t TYPE[,TYPE]', 
      ^
check_disk_space.rb:32: syntax error, unexpected ',', expecting kEND 

Другая проблема заключается в том, что программа, которая запускает сценарий является клиентом зепзи с побежал с известным пользователем sensu ps aux |grep sensu sensu 13148 4.0 0.4 86512 18696 ? Sl 09:38 0:00 /opt/sensu/embedded/bin/ruby /opt/sensu/bin/sensu-client -b -c /etc/sensu/config.json ...

ответ

0

Вы неправильно используете формат линии shebang. Должен быть путь к исполняемому файлу, возвращаемый which ruby.

Таким образом, предпочтительный способ будет использовать этот рубин в качестве стандартного по умолчанию:

rvm use 2.1.8 --default 

Это должно быть достаточно, чтобы запустить Ruby-сценариев с использованием выбранной версии Ruby. Если вы выберите этот вариант для этого конкретного сценария, самый простой путь будет работать which ruby после переключил версии с rvm и скопировать и вставить вывод выше в хижине линии:

$ which ruby 
/home/jenkins/.rvm/rubies/ruby-2.1.8/bin/ruby # NB the output may differ 

и теперь используйте его в shebang как есть, без пробелов:

#!/home/jenkins/.rvm/rubies/ruby-2.1.8/bin/ruby 
+0

hi @mudasobwa, спасибо за ответ. это не работает . все те же ошибки – WebQube

+0

Что именно не сработало? Шебанг или 'rvm --default'? – mudasobwa

+0

см. Мое редактирование сейчас – WebQube

Смежные вопросы