0

Railsアプリを含む仮想インスタンスの起動時に実行されるスクリプトがあります。これはテスト環境を設定するための自動システムの一部なので、この環境でアプリを起動するのが初めてかどうかに関係なく、正しく初期化してほしいと思います。つまり、環境がこのアプリを初めて認識したときは、標準を実行する必要があります。

rake db:create
rake db:schema:load
rake db:fixtures:load

ただし、DBがすでに作成された後はいつでも、それらのコマンドを無視する必要があります。これまでのところ、db:createをスキップできることを知っているのは十分賢いですが、他のものを再実行し続けます。

DBを直接呼び出してそれに基づいて行動する以外に、これを処理する簡単な方法はありますか?

4

1 に答える 1

0

おそらく実用的な解決策は、db:createのエラーを無視することです(dbが存在する場合は、例外が発生します)

したがって、次のようなレーキタスクを作成できます

task :my_task => :environment do
  begin
    Rake::Task["db:create"].invoke
    Rake::Task["db:schema:load"].invoke
    Rake::Task["db:fixtures:load"].invoke
  rescue Exception => e
  end

  #more stuff...
end
于 2013-03-04T23:23:58.517 に答える