2011-03-05 19 views
20

Parametrelerimi geçmek istediğim bir komisyon görevim var. Doğru,Parametre veya iki bir Rake görevine geçirme

... 
cust = Customer.find(the_id_passed_in) 
# do something with this customer record, etc... 
... 

Oldukça basit: Mesela ben

<prompt> rake db:do_something 1 

benzeri ve tırmık görev içinde bir komut istiyor?

+2

olası yinelenen [Nasıl bir tırmık göreve geçiş komut satırı argümanları yapmak?] (Http://stackoverflow.com/questions/825748/how-do-i-pass-komut satırı argümanlar-to-a-rake-görev) –

cevap

38

Rake komutlarının argümanları kabul etme ve tanımlama yolu, güzel değil.

senin görevin bu şekilde çağrı: Sana virgül gerekir göstermek için ikinci bir parametre ekledik

<prompt> rake db:do_something[1,2] 

, ancak boşluk ihmal.

Ve şöyle tanımlıyoruz: parametreleri geçen

task :do_something, :arg1, :arg2 do |t, args| 
    args.with_defaults(:arg1 => "default_arg1_value", :arg2 => "default_arg2_value") 
    # args[:arg1] and args[:arg2] contain the arg values, subject to the defaults 
end 
+1

Bunu rayların ortamının yüklenmesini gerektiren bir görevle nasıl yapıyorsunuz? Örneğin. normalde 'task: do_something =>: environment do'oming – Duke

+10

' görevi: do_something, [: arg1,: arg2] =>: ortam do | t, args |' – Duke

+2

Orada başka bir virgül istediğinizi düşünüyorum: 'task: do_something, : arg1' ... –

0

olsa da, daha iyidir seçenek bir giriş dosyasıdır, bu excel İhtiyacınız ve oradan veri yapısını ve değişkenleri okumak ne olursa olsun bir json veya olabilir İhtiyacı olan değişken adı da dahil olmak üzere ihtiyacınız var. Bir dosyayı okumak için aşağıdaki yapıya sahip olabilirsiniz.

namespace :name_sapace_task do 
    desc "Description task...." 
     task :name_task => :environment do 
     data = ActiveSupport::JSON.decode(File.read(Rails.root+"public/file.json")) if defined?(data) 
    # and work whit yoour data, example is data["user_id"] 

    end 
    end 

Örnek json

{ 
    "name_task": "I'm a task", 
    "user_id": 389, 
    "users_assigned": [389,672,524], 
    "task_id": 3 
} 

Yürütme

rake :name_task 
ait
+1

Neden [iki aynı cevap] veriyorsunuz (http://stackoverflow.com/a/22070576/861716)? Bir soruyu cevaplamak ve diğerini kopya olarak işaretlemek daha iyidir. –

İlgili konular