Rakeを実行するたびにdb:test:prepareというタスクが呼び出され、schema.rbとmigrationsからテスト環境データベースが再構築されます。 db:testの呼び出しを無効にするには、Railsアプリケーションをテストするときに準備する必要があります。 Railsの宝石を変更しなくても可能ですか?Rakeテストがタスクdb:test:prepareを呼び出すのを防ぐ方法
10
A
答えて
13
私の周り見てきたソリューションです:あなたのRakefileで
:
Rake::TaskManager.class_eval do
def remove_task(task_name)
@tasks.delete(task_name.to_s)
end
end
lib/tasks/db/test.rake
で:
Rake.application.remove_task 'db:test:prepare'
namespace :db do
namespace :test do
task :prepare do |t|
# rewrite the task to not do anything you don't want
end
end
end
5
override_rake_taskのためにこれを処理するプラグインがあります。ここで
namespace :db do
namespace :test do
override_task :prepare do; end
end
end
0
いくつかのためにここでは簡単な使用例です古いバージョンのレール - Rake::Task['db:test:prepare'].clear
をRakefileの最後に置くことができます
関連する問題
- 1. rakeタスクの中でRSpecを呼び出す方法は?
- 2. rspecでrakeタスクを呼び出す方法
- 3. IsAjaxRequestを呼び出すときのHttpRequestValidationExceptionを防ぐ方法
- 4. Assembly.GetTypes()を呼び出すときにReflectionTypeLoadExceptionを防ぐ方法
- 5. JQueryで過度の関数呼び出しを防ぐ方法
- 6. rufus-schedulerの中でrakeタスクを呼び出す
- 7. Rakeで別のタスクを呼び出すには
- 8. Java、クラスがパブリックメソッドを呼び出すのを防ぐ
- 9. 非同期タスクメソッドが同時に呼び出されるのを防ぐ方法
- 10. node.jsで同じURLが2回呼び出されるのを防ぐ方法
- 11. 関数が互いに呼び出すのを防ぐ
- 12. JSで別の関数を呼び出すのを防ぐ方法は?
- 13. ngForディレクティブでコンポーネントのコンストラクタを呼び出すのを防ぐ方法
- 14. jsファイルが2回呼び出されるのを防ぐ
- 15. Javascriptを呼び出すのを防ぐエラーなしのTypescript
- 16. whileループ内でのプログラム呼び出しの繰り返しを防ぐ方法
- 17. Rails 3のアップグレード後rake db:test:prepare not working?
- 18. 警告メッセージを防ぐためにConsole.WriteLine(ex.Message)を呼び出す
- 19. メソッド呼び出しを防ぐ方法(存在しない場合)
- 20. rakeターゲットを2回呼び出す方法
- 21. cinのコンソール出力を防ぐ方法
- 22. Shutdown()を呼び出すときにFileSystemWatcherがTaskCanceledExceptionをスローするのを防ぐ
- 23. jQuery Mobile - 選択時の呼び出しを防ぐ
- 24. Rake :: TestTaskと同じRakefileでカスタムRakeタスクを2回呼び出すことができません
- 25. スーパークラスがオーバーライドされたサブクラスメソッドを呼び出すのを防ぐ方法を教えてください。
- 26. 短いコード、重複呼び出しを防ぐ
- 27. androidのフラグメントで戻るボタンが押されたときにonCreateViewを呼び出すのを防ぐ方法
- 28. initの呼び出しを防ぐことができますか?
- 29. すぐに別のクラスからメソッドを呼び出す方法
- 30. 既に呼び出されている関数を呼び出すのを防ぐには?
私はこれが好きです。これにより、プラグインをインストールする必要はなく、うまく動作します。しかし、将来私はprepareメソッドを使いたいのですか? Rakeランニングキューからのみ削除することは可能ですか? –
その場合、 'test:units'、' test:functionals'、 'test:integration'を書き直して' db:test:prepareから継承しないようにする必要があるでしょう'タスク。 – mckeed
実は、私はこれをテストしていませんが、あなたはおそらくに 'remove_task'を変更することができます: 'デフrename_task(タスク名、new_task_name) @tasks [new_task_name] = @ tasks.delete(タスク名) end' あなたをテストタスクがまだそれを実行するので、 'db:test:prepare'を書き直さなければなりません。 – mckeed