2012-02-24 50 views
5

這裏是我的耙子任務如何傳遞參數到使用耙調用rake任務::任務

task :lab => :enviroment do 
    Rake::Task["db:rollback"].invoke('STEP=5') 
end 

它沒有做我想要的。我要的是

rake db:rollback STEP=5 

我用Rails 3.2.1紅寶石1.9.2。

在命令行我想執行

rake lab 

的實際情況要複雜得多,但這是JIST。

回答

-1

將此作爲環境變量傳遞可能是您最好的選擇。嘗試:

task :lab => :enviroment do 
    Rake::Task["db:rollback"].invoke(ENV['STEP']) 
end 

rake db:rollback STEP=5 
+0

我需要傳遞的是5還rake任務裏面。我怎麼做 ? – 2012-02-24 17:57:11

+0

你想使用它的每個人只需調用ENV ['STEP']並返回5. – Veraticus 2012-02-24 18:11:10

+1

這不起作用,因爲那樣會像Rake :: Task [「db:rollback」]。invoke(5)。注意'STEP'沒有被傳遞給db:rollback – 2012-02-24 19:14:01

0

選項可以通過rake命令指定鍵/值對傳遞到耙:

rake options:show opt1=value1 

這些命令行選項將自動設置爲可內訪問環境變量您rake任務:

namespace :options do 

    desc "Show how to read in command line options" 
    task :show do 
    p "option1 is #{ENV['opt1']}" 
    end 

end 
+0

請看問題。你的回答是對的,但與問題無關。 – 2012-02-24 18:04:22

4
task :lab => :enviroment do 
    ENV['STEP'] ||= 5 
    Rake::Task["db:rollback"].invoke 
end