我一直成功地使用bluepill来守护简单的 Ruby 脚本。但是,这一次,我有一个脚本,它也加载了 Rails 环境,因此我可以访问 Rails 应用程序及其各自模型的数据库连接。我使用的 bluepill 配置与我通常使用的配置没有什么不同:
Bluepill.application("myapp", :foreground => true, :log_file => "/tmp/bluepill.log") do |app|
app.process("myapp_process") do |process|
process.start_command = "/usr/local/rvm/rubies/ruby-1.9.3-p194/bin/ruby /media/apps/myapp/current/lib/async/myscript.rb"
process.pid_file = "/media/apps/myapp/current/tmp/pids/myscript.pid"
process.daemonize = true
process.stdout = "/var/log/myapp/media.log"
process.stderr = "/var/log/myapp/media_error.log"
process.working_dir = "/tmp"
process.stop_command = "kill -QUIT {{PID}}"
process.start_grace_time = 15.seconds
end
end
主要问题是这个错误:
Failed to signal process 16096 with code 0: No such process
如果我不使用此加载 Rails 环境:
require File.expand_path("/media/apps/myapp/current/config/environment")
这将与我的许多其他脚本一样工作。然而,这是我第一次尝试守护一个加载 Rails 环境的脚本。我知道我可以使用 ruby gem Daemons 来让它工作,但这并不能做监控,而 bluepill 能够很好地做到这两点。
我在这里遗漏了一些明显的东西吗?