2013-04-08 11 views
7

Ich habe versucht, rake db:test:clone_structure auszuführen, aber die Datenbank wird nicht wiederhergestellt. Ich sah schließlich an der Aufgabe selbst:Die Rake-Abhängigkeit wird nicht ausgeführt, ruft aber auf.

task :clone_structure => [ "db:structure:dump", "db:test:load_structure" ] 

Wenn ich die Spur laufen, habe ich bemerkt, dass db:test:load_structure nicht ausgeführt zu werden:

$ rake db:test:clone_structure --trace 
** Invoke db:test:clone_structure (first_time) 
** Invoke db:structure:dump (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Execute db:structure:dump 
** Invoke db:test:purge (first_time) 
** Invoke environment 
** Execute db:test:purge 
** Execute db:test:clone_structure 

Nun, wenn ich die clone_structure Aufgabe ändern rufenload_structure ...

task :clone_structure => [ "db:structure:dump", "db:test:load_structure" ] do 
    db_namespace["test:load_structure"].invoke 
end 

... plötzlich alles funktioniert!

$ rake db:test:prepare --trace 

** Invoke db:test:clone_structure (first_time) 
** Invoke db:structure:dump (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Execute db:structure:dump 
** Invoke db:test:purge (first_time) 
** Invoke environment 
** Execute db:test:purge 
** Execute db:test:clone_structure 
** Invoke db:test:load_structure (first_time) 
** Invoke db:test:purge 
** Execute db:test:load_structure 
** Invoke db:structure:load (first_time) 
** Invoke environment 
** Invoke db:load_config (first_time) 
** Execute db:load_config 
** Execute db:structure:load 

Was könnte möglicherweise dieses Verhalten verursachen? Ich benutze Rails 3.2.14 und Rake 10.1.0.

AKTUALISIERT: Ich habe Rails 3.2.13 von 3.2.11 aktualisiert und es ist immer noch ein Problem.

DIE ZWEITE AKTUALISIERT: ich Rails 3.2.14 aktualisiert und Rechen auf 10.1.0 und es ist immer noch ein Problem

+0

Wird Ihre Struktur.sql ohne Probleme erstellt, wenn Sie 'Rake db: test: clone_structure' ausführen? Sehen Sie irgendwelche Probleme damit? –

+0

Können Sie versuchen, 'RAILS_ENV = test rake db: test: prepare --trace' auszuführen? Ich habe manchmal gesehen, dass 'RAILS_ENV' für bestimmte Aufgaben gesetzt werden musste, um ausgeführt zu werden. – Subhas

+0

@yuri: db: test: Klonstruktur sieht so aus, als ob es perfekt funktioniert. Ich werde ein paar Debugs einwerfen, um sicherzugehen. – abeger

Antwort

0

Nach einem Stack-Trace in einer der Aufgaben kleben wusste, dass ich zu sein genannt, habe ich das Problem gefunden. Es hat nichts mit ActiveRecord oder Rake und alles was mit dem activerecord-oracle_enhanced-adapter Edelstein zu tun hat, den ich auch benutze.

Grundsätzlich überschreibt die Perle der db:test:clone_structure Aufgabe wie folgt:

redefine_task :clone_structure => [ "db:structure:dump", "db:test:purge" ] 

Beachten Sie, dass es einen Hinweis auf db:test:load_structure vermisst.

Ich habe eine issue und pull request zu dem Projekt eingereicht, so dass es hoffentlich in naher Zukunft gelöst werden kann.

1

ich Sie fast da würde sagen sind. Soweit ich die rake Konvention für das wissen würde ...

task :clone_structure => [ "db:structure:dump", "db:test:load_structure" ] do 
    Rake::Task["clone_structure"].invoke 
end 

Ansonsten ziehe ich ...

task :clone_structure do 
    Rake::Task["db:structure:dump"].invoke 
    Rake::Task["db:test:load_structure"].invoke 
end 
Verwandte Themen