2013-04-23 152 views
2

我有幾個rails rake任務需要在服務器啓動時啓動。我一直在尋找使他們作爲使用systemd的傳統服務運行。服務文件/etc/system/systemd下創建但不幸的是,它看起來像systemd沒有找到文件:在服務器啓動時啓動ruby rake任務

#systemctl start screens.service 
Failed to issue method call: Unit screens.service failed to load: No such file or directory. See system logs and 'systemctl status screens.service' for details. 

#systemctl status screens.service 
screens.service 
     Loaded: error 
     Active: inactive (dead) 

我目前使用的Fedora 15

我怎樣才能讓我的systemd服務工作?是否有另一種方法可以讓我的rake任務在系統啓動時運行。

更新: screens.service文件內容

[Unit] 
Description=Send Reminders 

[Service] 
Type=simple 
User=myuser 
WorkingDirectory=/path/to/rails/app 
ExecStart=/usr/local/rvm/gems/ruby-1.9.3-p194/bin/rake reminders:send 

我知道我需要在我需要它在啓動時工作,設置的依賴,但目前我正在嘗試使用systemctl命令來啓動我的耙子,以後擔心它的依賴關係。

+0

我們可以看看在'screens.service'文件? – marcosbeirigo 2013-04-23 11:42:18

+0

系統日誌中是否有任何有關未找到的文件或目錄的信息? – sockmonk 2013-04-23 14:34:27

回答

2

爲了使新的增值服務,我不得不插入以下命令systemd留意了:

systemctl daemon-reload 
0

一般來說,如果你需要在應用程序初始化開始的東西,你可以把.RB文件

config/initializers/文件夾

BTW可以ü詳細說明您的要求,怎麼可能有這樣的一些其他的方式相同:)

+0

我需要運行2個獨立於我的應用程序的後臺進程,類似於delayed_jobs'rake jobs:work' – wael34218 2013-04-23 11:52:30

2

首先,不要直接調用rake,而是調用/ path/to/ruby​​/bin/bundle exec rake my:raketask。第二,我認爲你應該真正看看領班寶石,因爲它是專門用來處理這種情況的,儘管你可能不得不適應它與systemd一起工作。

一種方法是從systemd init文件中調用foreman,並將其傳遞給應用程序目錄中的Procfile(foreman config file)。

工頭已經可以將其配置導出爲多種格式,但我認爲你不在其中。但是, 您可以創建一個自定義導出程序,將導出配置導出爲systemd格式。有關更多信息,請參閱https://github.com/ddollar/foreman/wiki/Custom-exporters。如果你走這條路,考慮把你的出口商退回到工頭項目。

+0

我正在考慮讓它與god(http://godrb.com/)一起工作,但是我必須做系統工作 – wael34218 2013-04-23 18:02:33