2012-02-24 28 views
5

Đây là nhiệm vụ của tôi càoLàm thế nào để vượt qua tham số để một nhiệm vụ cào mà được gọi bằng Rake :: tác

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

Nó không phải là làm những gì tôi muốn. Những gì tôi muốn là

rake db:rollback STEP=5 

Tôi đang sử dụng Rails 3.2.1 trên ruby ​​1.9.2.

Trên dòng lệnh tôi muốn thực hiện

rake lab 

Các trường hợp thực sự là phức tạp hơn nhiều nhưng đây là jist.

Trả lời

-1

Chuyển số này dưới dạng biến môi trường có thể là đặt cược tốt nhất của bạn. Hãy thử:

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

rake db:rollback STEP=5 
+0

tôi cần phải vượt qua đó 5 cũng bên trong nhiệm vụ cào. Làm thế nào để làm điều đó ? –

+0

Mọi người bạn muốn sử dụng nó chỉ cần gọi ENV ['STEP'] và nó sẽ trả về 5. – Veraticus

+1

Điều đó KHÔNG làm việc vì nó sẽ giống như Rake :: Task ["db: rollback"]. Gọi (5). Chú ý 'STEP' không được chuyển cho db: rollback –

0

Tùy chọn có thể được thông qua vào cào bằng cách xác định cặp khóa/giá trị trên lệnh rake:

rake options:show opt1=value1 

Các tùy chọn dòng lệnh này sau đó được tự động thiết lập như biến môi trường mà có thể được truy cập trong của bạn cào nhiệm vụ:

namespace :options do 

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

end 
+0

Vui lòng xem câu hỏi. Câu trả lời của bạn đúng nhưng không liên quan đến câu hỏi. –

4
task :lab => :enviroment do 
    ENV['STEP'] ||= 5 
    Rake::Task["db:rollback"].invoke 
end 
Các vấn đề liên quan