2016-07-20 10 views
3

In meinem Projekt Schienen (Rails 3.1, Ruby 1.9.3) sind ungefähr 40 Rake-Aufgaben definiert. Die Voraussetzung ist, dass ich in der Lage sein sollte, einen Eintrag (die Rake-Details) in einer Datenbanktabelle direkt beim Start jedes Rake zu erstellen. Die Details, die ich brauche, sind die rake name, arguments, start time und end time. Zu diesem Zweck möchte ich nicht, dass Rake-Dateien mit dem Code aktualisiert werden. Ist es möglich, dies außerhalb des Bereichs der Rake-Dateien zu tun?Eine allgemeine Methode, die vor jeder Rechenausführung aufgerufen wird

Jede Hilfe würde sehr geschätzt werden !!

+0

Sie können Ihre Rake-Aufgaben mit einem Haken versehen: http://stackoverflow.com/questions/15707940/rake-before-task-hook. Howeber, ich bin mir nicht sicher, ob Sie auf den Rake-Namen/die -Argumente der aufrufenden Aufgabe zugreifen können. –

Antwort

0

Das scheint etwas peinlich zu sein, aber es kann anderen helfen.

Rake.application.top_level_tasks 

wird eine Anordnung von Informationen, einschließlich Rake Namens zurück und seine Argumente . Referenz unten angehängt.

pry(main)> a = Rake.application.top_level_tasks 
=> ["import_data[client1,", "data.txt]"] 
+0

Postleitzahl, keine Screenshots des Codes –

+0

Danke für die Info –

-1

Wenn Sie Rake Aufgabe erstellen, können Sie eine übergeordnete Aufgabe übergeben, die vor Ihrer Aufgabe ausgeführt wird:

task my_task: :my_parent_task do 
    # ... 
end 

Wenn Ihre Aufgabe von mehr als 1 Aufgabe abhängig ist, können Sie eine Reihe von übergeordneten Aufgaben passieren

task my_task: [:my_prev_task, :my_another_prev_task] do 
    # ... 
end 
+0

Ich möchte meine bestehenden Rake-Aufgaben nicht aktualisieren. Was ich brauche ist nur ein gemeinsamer Punkt, der vor jeder Aufgabe aufgerufen werden kann –

0

Versuchen Sie, diese https://github.com/guillermo/rake-hooks

For example in your Rakefile 

require 'rake/hooks' 

task :say_hello do 
    puts "Good Morning !" 
end 

before :say_hello do 
    puts "Hi !" 
end 

#For multiple tasks 

namespace :greetings do 
    task :hola do puts "Hola!" end ; 
    task :bonjour do puts "Bonjour!" end ; 
    task :gday do puts "G'day!" end ; 
end 

before "greetings:hola", "greetings:bonjour", "greetings:gday" do 
    puts "Hello!" 
end 

rake greetings:hola # => "Hello! Hola!" 
+0

http://StackOverflow.com/Questions/15707940/Rake-before-Task-Hook – Xeeshan

+0

Es löst nicht mein Problem, ich möchte eine Methode ausgeführt werden vor jedem Rake ohne meine bestehenden Rake-Aufgaben –

+0

Wir müssen unsere Rake-Aufgabe in einem Namensraum bewegen und in zuvor nur Ihre Methode aufgerufen. Sie müssen Ihre vorhandenen Aufgaben nicht aktualisieren, aber Sie müssen Rake-Datei aktualisieren, um Namespace und vor Hook hinzuzufügen. – Xeeshan

Verwandte Themen