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

  • eurotuner

    eurotuner

    6 Mart 2006
  • The Dubstep FX

    The Dubstep

    5 Mart 2011
  • UCBerkeley

    UCBerkeley

    3 Mayıs 2006