我使用厨师部署到测试机器。配方的第一部分是安装rbenv。
下一部分是克隆/web/newrelic_sidekiq_agent
下的newrelic_sidekiq_agent git repo。
下一部分是从以下模板创建init.d脚本。
APP_PATH=/web/newrelic_sidekiq_agent
. /etc/rc.d/init.d/functions
start() {
cd $APP_PATH && ./newrelic_sidekiq_agent.daemon start
}
stop() {
cd $APP_PATH && ./newrelic_sidekiq_agent.daemon stop
}
status() {
cd $APP_PATH && ./newrelic_sidekiq_agent.daemon status
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
$0 stop
$0 start
;;
status)
status
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
newrelic_sidekiq_agent.daemon
的内容是
#!/usr/bin/env ruby
require 'rubygems'
require 'daemons'
require 'bundler/setup'
Daemons.run(File.dirname(Pathname.new(__FILE__).realpath) + '/newrelic_sidekiq_agent')
厨师食谱失败,因为它无法找到红宝石箱。我得到的错误是
Mixlib::ShellOut::ShellCommandFailed
------------------------------------
Expected process to exit with [0], but received '127'
---- Begin output of /sbin/service newrelic_sidekiq_agent start ----
STDOUT:
STDERR: /usr/bin/env: ruby: No such file or directory
---- End output of /sbin/service newrelic_sidekiq_agent start ----
登录服务器,我设置了全局ruby版本,然后运行以下内容。
>> rbenv global
2.1.6
>> which ruby
/opt/rbenv/shims/ruby
>> /sbin/service newrelic_sidekiq_agent status
/usr/bin/env: ruby: No such file or directory
>> ./newrelic_sidekiq_agent.daemon status
newrelic_sidekiq_agent: running [pid 25208]
将对ruby的调用更改为使用绝对路径可以使用init.d脚本。
#!/usr/bin/env /opt/rbenv/shims/ruby
有没有办法使它工作,所以我不必使用绝对路径?