rails のデフォルトの rake タスクをオーバーライドする
2023-08-08 02:58:08
質問
Rails 2.2プロジェクトで、以下の機能をオーバーライドしたいのですが、どうすればよいでしょうか。
rake db:test:prepare
タスクの機能を上書きしたいのです。 私はこれがうまくいくと思ったのですが、うまくいきません。
#lib/tasks/db.rake
namespace :db do
namespace :test do
desc "Overridden version of rails' standard db:test:prepare task since the schema dump used in that can't handle DB enums"
task :prepare => [:environment] do
puts "doing db:structure:dump"
Rake::Task['db:structure:dump'].invoke
puts "doing db:test:clone_structure"
Rake::Task['db:test:clone_structure'].invoke
end
end
end
標準のタスクの挙動が出ますね。 もし、タスクの名前を
:prepare2
にして、次に
rake db:test:prepare2
を実行すると、正常に動作します。 ここから導き出される自然な結論は、私の rake タスクが以下のように定義されているということです。
の前に
の前に定義されているため、私のタスクは標準の
:prepare
タスクで上書きされます。
誰かこれを修正する方法を見ることができますか? 私は新しいタスクを使用する必要があるよりも、それを上書きしたいです。 ありがとうございます、max
どのように解決するのですか?
既に存在する rake タスクを定義した場合、その実行は元のタスクの実行に追加されます; 両方のタスクが実行されます。
タスクを再定義したい場合は、最初に元のタスクをクリアする必要があります。
Rake::Task["db:test:prepare"].clear
また、rake で一度実行されたタスクは、再度呼び出したとしても二度と実行されないということも知っておくと便利です。これは意図的なものですが
.reset
を呼び出すことで再実行させることができます。
関連
-
[解決済み] Ruby/Rails の「フック」とは何ですか?
-
[解決済み] rake db:migrateを使って1ステップだけロールバックする方法
-
[解決済み] Railsマイグレーションを利用してカラムをドロップする方法
-
[解決済み] Railsで `before_action` での `only:` はどのように機能するのですか?
-
[解決済み] RoRにおけるSpringサーバーの機能とは?
-
[解決済み] Ruby on Railsのデータベースをパージまたは再作成する
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] rake db:migrate db:reset とdb:schema:loadの違いについて
-
[解決済み】rakeタスクにコマンドライン引数を渡す方法
-
[解決済み】Railsの認証トークンを理解する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Rails: sudo "コマンドが認識されないのはなぜですか?
-
[解決済み] Railsサーバーがポートはすでに使用されていると言う、そのプロセスを殺すにはどうすればよいですか?
-
[解決済み】bcrypt LoadError: Cannot load such file
-
[解決済み】PG::ConnectionBad: fe_sendauth: パスワードが供給されない
-
[解決済み] Ruby on Railsのランナー
-
[解決済み] Mac OS Xにhomebrewがインストールされているかどうかを確認する方法
-
[解決済み] heroku push rejected, failed to compile Ruby/rails app
-
[解決済み] rails erb フォームヘルパー options_for_select :selected
-
[解決済み] nil:NilClass の未定義メソッド `each'... なぜ?
-
[解決済み] Rails 4で、以前のバージョンのRailsでattr_accessibleを使用していた状況に遭遇した場合、Forbidden Attributes Errorが発生する。