2009-03-04 8 views
3

私はdb:migrate VERSION = 0を実行してから、db:migrateを自分のrakeタスクの中で実行したいと思います。私はこれを行う方法について混乱しています。私は特別な要求声明が必要ですか?私のレーキタスクは、Railsアプリケーションのlib/tasksディレクトリにあります。ありがとう。Rails db:migrateタスクを実行するレーキタスクをコーディングするにはどうすればよいですか?

答えて

2

あなたのタスクは、クリーンデシベルを持つにだけ依存しているを実行しないかを確認するには?その場合は、あなたが行うことができます。

タスク:my_task => [:環境、「DB:リセット」]

+0

私はこれが好きです。できます。これは必ず:環境タスクがすべてのrake rakeネームスペースをロードすることを意味します。 – fooledbyprimes

2

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以上が必要です。

+0

私は(LIB /タスクに常駐している)私のカスタムrakeタスクのこの内部を試みたが、それが失敗しました。 ( "rake abortedタスクDBを構築する方法がわからない:VERSION = 0を移行する") – fooledbyprimes

+0

Rake :: Task []はparamsを受け入れる:Rake :: Task ['my:task']。invoke( "123-abc" ) – Webdevotion

0

rake db:resetをチェックしてください。

は、あなたのすくいタスクの全てが、rake -T

+0

これは面白いですが、実際に新しく作成されたカスタムレイクタスクの中にあらかじめビルドされたrailsタスクを実行する方法については説明していません。 – fooledbyprimes

+0

ええ、Pestoは私の前に彼の答えを得ていたので、質問に正確に答えなかったとしても簡単な方法を教えてくれるとは思っていませんでした。 – erik

+0

実際にPestoの答えはうまくいかなかった。 – fooledbyprimes

関連する問題