我想在我的Rails项目中使用Daemons gem,所以我可以使用Monit轻松监视它,这个gem可以让我创建PID并使用start和stop之类的命令。
无论如何,似乎我不能以某种方式使用它与轨道,我创建一个文件并将其命名为admin:
require 'rubygems'
require 'daemons'
ROOT_PATH = File.expand_path("#{File.dirname __FILE__}/../")
require "#{ROOT_PATH}/config/environment"
Daemons.run("#{ROOT_PATH}/script/rails" ,
:dir_mode => :system,
:log_output => true
)
当我尝试使用以下命令运行时:
bundle exec ./bin/admin run -- s
我收到此错误:
/Users/info/.rvm/gems/ruby-1.9.3-p286/gems/rake-0.8.7/lib/rake/alt_system.rb:32: Use RbConfig instead of obsolete and deprecated Config.
=> Booting WEBrick
=> Rails 3.0.5 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
configuration /config.ru not found
Exiting
config.ru文件肯定存在。当我尝试使用命令行手动执行应用程序时,我可以运行该应用程序,但由于某种原因,我可以守护rails应用程序。
我会感激任何帮助,因为我花了一整天时间试图解决这个问题。
干杯
答案 0 :(得分:2)
可能是因为daemons
没有在应用程序根目录中运行服务器吗?
更新
要从根应用程序目录以外的其他路径启动Rails服务器,请使用-c
命令的rails server
选项,该命令需要config.ru
文件的确切路径。
答案 1 :(得分:0)
我知道这并没有直接解决你的守护进程问题,但如果你在linux上,你可以使用start-stop-daemon基本上做同样的事情。你不需要一个脚本,只需要你的monit配置中的一个内核,它使用start-stop-daemon来守护进程。