2012-11-09 51 views
1

我想使用守护进程gem与我的Rails项目,因此我可以使用Monit轻松监控它,该gem将允许我创建PID并使用诸如启动和停止之类的命令。我无法使用守护进程运行我的Rails应用程序gem

不管怎么说,似乎我无法与导轨以某种方式使用它,我创建了一个文件,并把它命名为管理员:

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

一些简单的事情可以尝试 - 更新Rails的最新版本和/或使用瘦而不是WEBrick(我认为我之前在Mac上看到了WEBrick的错误)。即使他们没有解决这个问题,你也会提前... –

+0

@BradWerth感谢你的帮助,我只是试着用瘦sudo bundle exec ./bin/admin run - s的薄-p 80 **,但我得到了完全相同的错误,配置/config.ru找不到 - –

+0

在这里的任何其他想法? –

回答

1

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

UPDATE

从另一条道路展开的Rails服务器以外的根目录下的应用程序,使用rails server命令的-c选项,这需要你config.ru文件的确切路径。

+0

感谢您的帮助,但我从我的应用程序的根目录运行脚本,管理脚本是在我的rails项目/ bin目录中, m从我的rails的根目录中运行它,有什么建议吗? –

+0

其实我将脚本移动到rails根目录,并直接使用** sudo bundle exec ./admin run - s **运行它,但仍然得到了完全相同的错误 –

+0

此处有任何其他想法? –

0

我知道这并不直接与后台程序解决您的问题,但如果你是在Linux上,你可以使用start-stop-daemon的基本上做同样的事情。你不需要一个脚本,只需要在你的monit配置中使用start-stop-daemon来守护进程。

相关问题