SORU
5 Mayıs 2009, Salı


Nasıl komisyon bir görev için komut satırı argümanları geçtim mi?

Eklemek için gereken birden fazla veritabanı içine bir değer yaptığımı komisyon bir görev var.

Komut satırından komisyon görevi bu değeri geçmek mümkün olmak istiyorumya da başka bir komisyon görevibunu nasıl yapabilirim?

CEVAP
5 Mayıs 2009, Salı


Görev çağrısı sembol değişkenleri ekleyerek komisyon resmi bağımsız değişkenleri belirtebilirsiniz. Örneğin:

require 'rake'

task :my_task, [:arg1, :arg2] do |t, args|
  puts "Args were: #{args}"
end

task :invoke_my_task do
  Rake.application.invoke_task("my_task[1, 2]")
end

# or if you prefer this syntax...
task :invoke_my_task_2 do
  Rake::Task[:my_task].invoke(3, 4)
end

# a task with prerequisites passes its 
# arguments to it prerequisites
task :with_prerequisite, [:arg1, :arg2] => :prerequesite_task

# to specify default values, 
# we take advantage of args being a Rake::TaskArguments object
task :with_defaults, :arg1, :arg2 do |t, args|
  args.with_defaults(:arg1 => :default_1, :arg2 => :default_2)
  puts "Args with defaults were: #{args}"
end

Daha sonra komut satırından:

> rake my_task[1,2]
Args were: {:arg1=>"1", :arg2=>"2"}

> rake "my_task[1, 2]"
Args were: {:arg1=>"1", :arg2=>"2"}

> rake invoke_my_task
Args were: {:arg1=>"1", :arg2=>"2"}

> rake invoke_my_task_2
Args were: {:arg1=>3, :arg2=>4}

> rake with_prerequisite[5,6]
Args were: {:arg1=>"5", :arg2=>"6"}

> rake with_prerequisite_2[7,8]
Args were: {:arg1=>"7", :arg2=>"8"}

> rake with_defaults
Args with defaults were: {:arg1=>:default_1, :arg2=>:default_2}

> rake with_defaults['x','y']
Args with defaults were: {:arg1=>"x", :arg2=>"y"}

İkinci örnekte görüldüğü gibi, Eğer boşluk kullanmak istiyorsanız, hedef adı tırnak kadar boşluk argümanlar yarma kabuk tutmak için gereklidir.

Kodda bakıyorkomisyon.rbbu komisyon görev dizeleri task :t1 => "dep[1,2]" yapamazsın yani Önkoşullar için değişkenleri ayıklamak için ayrıştırma değil gibi görünüyor. Bir ön koşul için farklı argümanlar belirtmek için tek yol bu açıkça :invoke_my_task :invoke_my_task_2 bağımlı olarak görev eylem içinde çağırmak olacaktır.

Deniz kabuğu (zsh gibi) parantez kaçış için gerekli olduğunu unutmayın: rake my_task\['arg1'\]

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Alfredo Garcia

    Alfredo Garc

    25 Mayıs 2007
  • Chanre Joubert

    Chanre Joube

    27 Temmuz 2012
  • olinerd

    olinerd

    23 AĞUSTOS 2007