Требует драгоценный камень в сценарии 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"
в начале.