Rails db:migrateタスクを実行するrakeタスクをコーディングするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/611189

  •  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

を実行します
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top