2013-04-08 8 views
7

私はrake db:test:clone_structureを実行しようとしていますが、データベースの再構築は失敗します。私はclone_structureタスクを変更すると、今レイク依存関係は実行されていませんが動作します

$ 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 

:私はトレースを実行すると、私はdb:test:load_structureが実行取得されていないことに気付きました

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

:私は最終的にタスク自体を見てload_structure ...

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

を呼び出す...すべてが突然動作します!

$ 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 

この現象の原因は何でしょうか?私はRails 3.2.14とRake 10.1.0を使用しています。

UPDATED:私は3.2.11から3.2.13にRailsをアップグレードしましたが、それでも問題はあります。 SECOND UPDATED

を私は3.2.14へのレールをアップグレードし、10.1.0にレーキ、それはまだ私はあなたがほとんどそこにあると言うでしょう問題

+0

'rake db:test:clone_structure'を実行する際に、structure.sqlを問題なく作成できますか?あなたはそれに何か問題を見ますか? –

+0

'RAILS_ENV = test rake db:test:prepare --trace'を実行できますか?私はときどき実行するために特定のタスクに対して 'RAILS_ENV'が設定されなければならないことを知りました。 – Subhas

+0

@yuri:db:test:clone_structureは完全に動作するようです。私はいくつかのデバッグを投げて、確実に確認します。 – abeger

答えて

0

を好みます私はその問題を発見しました。それはActiveRecordやRakeや、私が使用しているactiverecord-oracle_enhanced-adapterの宝石とは関係がありません。

基本的には、宝石はそうのようなdb:test:clone_structureタスクよりも優先されます:それはdb:test:load_structureへの参照を逃していること

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

注意を。

私はissuepull requestをプロジェクトに提出しました。近い将来に解決されるはずです。

1

です。私の知る限り、このためrake大会が...そうでなければ

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

だろう知っているように、私は私があることを知っていた課題の一つでスタックトレースを貼り付けた後...

task :clone_structure do 
    Rake::Task["db:structure:dump"].invoke 
    Rake::Task["db:test:load_structure"].invoke 
end 
関連する問題