需要一个Ruby脚本中的gem启动时失败

我正在使用厨师使用机器启动。 我需要它来安装一个init.d脚本,当脚本在chef运行结束时被调用,脚本在require'守护进程'行(如下所示)上失败。 我在require和require之前和之后有一个打印logging。

# 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 

之前的打印logging。 打印后不是。 我想,因为这是在启动时,一些envvariables可能不会设置正确。 有没有人能够在启动时运行ruby脚本的需求?

我的init.d脚本是一个具有启动function的标准脚本,如下所示:

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

login到terminal并运行脚本显示没有错误,事情正常进行。

ruby1.9.2 Ubuntu的11.04虽然我不知道他们中的任何一个是这里的问题。

它可能是环境variables,也可能是在脚本运行的时候,带有模块的文件系统没有挂载。

您可以尝试使用ruby -w运行以获取更多信息,或者可以在运行ruby脚本之前设置RUBYLIBS environemntvariables,例如

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

在开始时。