Требует драгоценный камень в сценарии ruby ​​не удается во время загрузки

Я загружаюсь, используя машину, используя шеф-повара. Мне нужно установить скрипт init.d, который он выполняет, и когда скрипт вызывается в конце запуска chef, скрипт завершается ошибкой в ​​строке require 'daemons' (как показано ниже). У меня есть отпечаток до и после запроса, а другой перед требованием - в журнале.

# my_invoked_script.rb
 $stdout.reopen("output.txt")
 $stderr.reopen("err.txt")
 pid = fork
 if pid.nil?
     puts "Before"
     require 'daemons'
     puts "After"
     ...
 else
   Process.detach(pid)
 end

Предыдущая печать записывается в журнал. После печати нет. Я думаю, так как это во время загрузки, некоторые переменные env могут быть установлены неправильно. Кто-нибудь был в состоянии запустить сценарии ruby ​​с требованием в них во время загрузки?

Мой скрипт init.d - это стандартный скрипт со следующей функцией запуска:

start(){
   /usr/local/bin/ruby /home/ubuntu/my_invoked_script.rb
}

Вход в терминал и запуск сценария не показывают ошибок, и все идет как обычно.

Ruby 1.9.2 ubuntu 11.04, хотя я не уверен, что здесь есть проблема.

1 ответ

Это могут быть переменные среды или файловая система с модулями, которая не смонтирована во время запуска сценария.

Вы можете попробовать запустить с ruby ​​-w для получения дополнительной информации, или вы можете установить переменную RUBYLIBS environemnt перед запуском сценария ruby, например:

export RUBYLIB="/path/to/lib/ruby"

в начале.

Другие вопросы по тегам