2013-10-02 38 views
1

我想知道我正在執行什麼命令。大多數命令都會執行rails初始化程序,如rake db:migrate, rake db:setup, rails console, rails server瞭解Rails初始化當我們執行rake db時:migrate

這個問題的原因是我開始在rails初始化期間使用Rufus-scheduler調度一些作業。不幸的是,所有這些初始化程序都在執行rails console或耙db:migrate時執行。我只想在執行rails server時安排工作。

您的幫助將不勝感激。謝謝。

回答

2

當我想安排,只有當我運行服務器作業,下面的命令有助於理解我們正在運行的服務器。

defined?(Rails::Server) 

這就解決了這個問題。

0

您提到的rake任務和大多數Rails相關任務取決於environment rake任務。這個rake任務加載config/environment.rb,這需要config/application.rb,而這又需要您的應用程序所需的每個文件和依賴項,包括config/initializers/下的初始化程序。

如果你的東西不應該包含在這個依賴圖中,它們可能不屬於初始化器。

擁有「後臺工作人員」的常見方法是單獨進行rake任務並使用庫,如foreman,該庫將讀取Procfile以啓動多個進程。

一個例子:

app: rails server 
workers: rake jobs:work 
+0

我也有通過Rails UI管理這些計劃任務的需求,如果我從Foreman開始,我將無法控制其他進程,我的意思是重新計劃任務。 – Antony

+0

這不是Rails非常擅長的東西。如果你需要類似的東西,我建議使用heroku的調度程序。 –

+0

無論如何,您的Rails用戶界面可以設置一個時間戳,讓我們稱之爲next_run_at,然後您的工作人員可以知道檢查該內容,並在該時間到來之前不做任何事情。 –

相關問題