4

このコメントは次のように述べています。

db:drop は、db が存在しない場合でも失敗することなく実行できます

これはまさに私が必要とするものです: db:drop を実行する必要がありますが、データベースが存在しない場合は例外をスローしたり、プロセス全体を停止したりせずに、存在する場合はデータベースを削除するか、何もしません。

どうやってやるの?db:dropデータベースが存在しない場合、自分の人生を破壊しないようにするにはどうすればよいですか?

これは私が問題を経験しているコードです(それは役に立ちます):

namespace :db do
  task import: :environment do
    Rake::Task["db:drop"].invoke # If the database doesn't already exist, the whole import process terminates!
    Rake::Task["db:create"].invoke
    Rake::Task["db:migrate"].invoke
    database_config = Rails.configuration.database_configuration[Rails.env]
    system "psql --username=#{database_config['username']} #{database_config['database']} < PostgreSQL.sql"
  end
end
4

1 に答える 1

0

単純な例外処理に行けないのはなぜですか

namespace :db do
  task import: :environment do
    begin
      Rake::Task["db:drop"].invoke # If the database doesn't already exist, the whole import process terminates!
      Rake::Task["db:create"].invoke
      Rake::Task["db:migrate"].invoke
      database_config = Rails.configuration.database_configuration[Rails.env]
      system "psql --username=#{database_config['username']} #{database_config['database']} < PostgreSQL.sql"
   rescue Exception => e
     p "The Exception is #{e.message}"
   end
  end
end
于 2013-05-14T08:13:44.067 に答える