Rails db:migrateタスクを実行するrakeタスクをコーディングするにはどうすればよいですか?
-
03-07-2019 - |
質問
db:migrate VERSION = 0を実行してから、独自のrakeタスク内でdb:migrateを実行します。私はこれを行う方法について混乱しています。特別なrequireステートメントが必要ですか?私のレーキタスクは、Railsアプリのlib / tasksディレクトリにあります。ありがとう。
解決
あなたのタスクは、クリーンなデータベースを持っていることだけに依存していますか?その場合は、次のことができます。
task:my_task => [:environment、 'db:reset']
他のヒント
EDIT:Rake :: Task []はパラメーターを受け入れないため、ENVで設定する必要があります。さらに、タスクを複数回実行するには、タスクを再度有効にする必要があります。
ENV['VERSION']= '0'
Rake::Task['db:migrate'].invoke
Rake::Task['db:migrate'].reenable
ENV.delete 'VERSION'
Rake::Task["db:migrate"].invoke
注:Rake :: Task.reenableにはRake 0.8.2以降が必要です。
rake db:reset
をチェックアウトすると、目的の処理が実行されます。
すべてのrakeタスクの動作を確認するには、 rake -T
所属していません StackOverflow