2011-06-07 67 views
19

我正在使用Rails 3.1 beta與Ruby 1.9.2和Rake 0.9.2,我編寫的一堆rake任務。這裏有一個例子:什麼是rake任務的新格式? (任務:t,arg,:needs => [deps]與任務:t,[args] => [deps])

namespace :data do 
    desc "dump the nodes and edges for a graph" 
    task :dump_graph, :species_id, :needs => :environment do |t,args| 
    args.with_defaults(:species_id => 'Hs') 
    # ... 
    end 
end 

當我的Rails應用程序加載這些耙的任務,不過,我現在得到以下警告每個耙子任務重複一次:

at /home/user/railsapp/lib/tasks/data/dump_graph.rake:3:in `block in <top (required)>' 
WARNING: 'task :t, arg, :needs => [deps]' is deprecated. Please use 'task :t, [args] => [deps]' instead. 

我已經重新安排試驗以幾種不同的方式提出爭論,但我不清楚現在我的任務應該是什麼樣子。

耙子是否希望我給個體的依賴?如果dep是rails環境,我如何在rake任務中定義它們?

更新文檔的鏈接將是一個可接受的答案!我谷歌搜索和谷歌搜索,但沒有運氣。

(是的,我意識到格式在錯誤信息中給出,但該格式似乎不正確的基礎上,我已經試過了變化。)

+0

我也有這個問題,但解決方案無法正常工作。我甚至有一個沒有參數的rake任務,它也不起作用。我的語法如下所示:'task:task_name =>:environment do ... end' – n8gard 2012-03-20 18:53:29

回答

10

我知道有時候很難破譯但錯誤信息給你新的格式:

task :t, [args] => [deps] 

因此,對於你的例子:

task :dump_graph, :species_id => :environment 

http://www.postal-code.com/binarycode/2011/06/02/rake-needs-deprecated/

+6

奇怪的是,當我正在試驗這個時,我無法讓它工作,但它現在可以工作。我通過這樣做來實現它:'task:dump_graph,[:species_id] => [:environment]'。如果你只有一個dep,顯然右邊的列表是可選的。 – 2011-07-19 17:50:35

9

這對我的作品的用法是:

task :task_name, [:argument] => :environment 

我想如果你有幾個依賴關係列出,DEPS需要的數組符號。

我不知道爲什麼一個參數需要數組表示法 - 使用--trace運行rake任務給出一個有關:參數符號不響應空的錯誤?方法。

相關問題