0

我有一个脚本,它将在包含 Rails 应用程序的虚拟实例的启动时运行。这是用于设置测试环境的自动化系统的一部分,因此我希望它能够正确初始化,无论这是否是该应用程序第一次在此环境中启动。也就是说,环境第一次看到这个应用程序时,它应该运行标准:

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

但是在创建数据库之后的任何时候,它都应该忽略这些命令。到目前为止,很聪明地知道 db:create 可以跳过,但它会不断重新运行其他的。

除了直接调用数据库并采取行动之外,是否有一种简单的方法来处理这个问题?

4

1 回答 1

0

可能务实的解决方案是忽略 db:create 上的错误(如果 db 存在,它将引发异常)

所以你可以创建一个 rake 任务,比如

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 回答