我无法使用守护进程gem运行我的Rails应用程序

时间:2012-11-09 02:15:32

标签: ruby-on-rails ruby-on-rails-3 deployment daemon

我想在我的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应用程序。

我会感激任何帮助,因为我花了一整天时间试图解决这个问题。

干杯

2 个答案:

答案 0 :(得分:2)

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

更新

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

答案 1 :(得分:0)

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