1

我想在我的 Rails 项目中使用 Daemons gem,这样我就可以使用 Monit 轻松监控它,这个 gem 将允许我创建 PID 并使用 start 和 stop 等命令。

无论如何,我似乎无法以某种方式将它与 rails 一起使用,我创建了一个文件并将其命名为 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 app 。

我会很感激任何帮助,因为我整天都在努力解决这个问题。

干杯

4

2 回答 2

2

可能是因为daemons没有在您的应用程序根目录中运行服务器?

更新

要从您的根应用程序目录以外的其他路径启动 Rails 服务器,请使用命令-c选项,该选项rails server需要您的config.ru文件的确切路径。

于 2012-11-09T07:42:27.357 回答
0

我知道这并不能直接解决你的守护进程问题,但如果你在 linux 上,你可以使用 start-stop-daemon 基本上做同样的事情。而且你不需要它的脚本,只需要你的监视器配置中的一个衬里,它使用 start-stop-daemon 来守护进程。

于 2012-11-09T02:48:17.113 回答