2012-11-09 91 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來守護進程。

相關問題