2016-03-04 77 views
1

我們必須從一個很老的rails應用程序運行一些rails方法。因爲它太舊了,我們不想更改代碼或安裝新的計劃任務或寶石。所以我們嘗試在crontab中通過一個簡單的rails runner命令來啓動這些方法。從crontab運行rails runner方法

我們嘗試了一些組合,但服務器對我們來說是新的,我們不知道爲什麼crontab無法執行rails runner命令。

這些都是我們的嘗試:

rails runner ApplicationController.method >> logfile.log 
/bin/bash -l -c 'cd /path/to/code && rails runner ApplicationController.method' >> logfile.log 
source ~/.bashrc && /bin/bash -l -c 'cd /path/to/code && rails runner ApplicationController.method' >> logfile.log 

running a shell script with the rails runner command 

ect. 

所有attemps的工作在正常外殼(SSH的連接),但它永遠不會從crontab的工作。這些命令總是創建日誌文件,但它是空的,我們確保該命令未被執行(通過rails c進行檢查)。

我們可以做些什麼來使crontabs工作?

編輯:服務器使用rvm來管理ruby版本。也許這是問題所在。

回答

0

要在crontab中執行ruby/rails腳本,請使用/ bin/bash。 示例:

* * * * * /bin/bash -l -c "ruby /home/abc/sample.rb" 
+0

這不起作用。就像我在我的問題中所說的,我已經嘗試了'/ bin/bash -l -c'命令而沒有成功。我也嘗試以這種方式運行ruby文件('.rb')。沒有運氣。我們使用rvm,是這個問題嗎? – mgluesenkamp