2013-02-04 63 views
6

我知道我可以有以下調用子任務列表,並各有一個利用我的項目的Rails環境:「私人」與Rails環境Rake任務

task :main_task => [:sub_task1, :sub_task2] do 
end 

task :sub_task1 => :environment do 
    Model1.some_class_method 
end 

task :sub_task2 => :environment do 
    Model2.some_class_method 
end 


我的問題是

  1. 是否有:main_task任何方式通過:environment讓我沒有明確地把它放在每個子任務?
  2. 有什麼辦法讓子任務被視爲「私人」?也就是說,我不希望他們被單獨明確地調用。他們只會執行從:main_task。基本上我需要從一個數據庫(SQLServer)讀取數據並填充另一個數據庫(MySQL - Rails項目的數據庫),但是我希望將「讀取」任務與「填充」任務分開以實現良好的可讀性。

回答

6

您可以在其他兩個任務中列出:environment任務一次,然後讓其僅列出一次。

task :main_task => [:environment, :sub_task1, :sub_task2] do 
end 

有沒有「私人」的任務,但是你可以讓他們被列爲由rake -T通過不把一個desc線之上他們。如果直接調用異常(檢測父代執行的操作或某些操作),則可以通過拋出異常來手動執行它們。

但是,您可能會有更好的時間將代碼放入共享方法或類中,而這些方法或類不直接作爲rake任務公開。

相關問題