Ich habe eine Rake-Aufgabe, die einen Wert in mehrere Datenbanken einfügen muss.
Ich möchte diesen Wert an die Rake-Aufgabe von der Kommandozeile aus übergeben, oder von eine andere Rake-Aufgabe.
Wie kann ich das tun?
Ich habe eine Rake-Aufgabe, die einen Wert in mehrere Datenbanken einfügen muss.
Ich möchte diesen Wert an die Rake-Aufgabe von der Kommandozeile aus übergeben, oder von eine andere Rake-Aufgabe.
Wie kann ich das tun?
Ich konnte nicht herausfinden, wie man args und auch die :environment übergibt, bis ich dies herausgefunden habe:
namespace :db do
desc 'Export product data'
task :export, [:file_token, :file_path] => :environment do |t, args|
args.with_defaults(:file_token => "products", :file_path => "./lib/data/")
#do stuff [...]
end
end
Und dann rufe ich so an:
rake db:export['foo, /tmp/']
Ich wollte einfach nur laufen können:
$ rake some:task arg1 arg2
Einfach, nicht wahr? (Nö!)
Rake interpretiert arg1
y arg2
als Aufgaben und versucht, sie auszuführen. Also brechen wir einfach ab, bevor es passiert.
namespace :some do
task task: :environment do
arg1, arg2 = ARGV
# your task...
exit
end
end
Nehmt das, Klammern!
Haftungsausschluss : Ich wollte dies im Rahmen eines ziemlich kleinen Haustierprojekts tun können. Nicht für die "reale Welt" gedacht, da man die Möglichkeit verliert, Rake-Aufgaben zu verketten (d.h. rake task1 task2 task3
). Das ist es IMO nicht wert. Verwenden Sie einfach die hässliche rake task[arg1,arg2]
.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.