如果数据库已存在,则依赖于Rake任务

时间:2015-01-05 17:45:50

标签: ruby-on-rails ruby rake

前言我已阅读this question和其他人,但没有回答确实提到了在rake任务中执行此操作的方法。

我想做一个有点像这样的安装脚本:

  if database_exists?
    sh 'rake db:migrate'
  else
    sh 'rake db:setup'
  end

我没有写database_exists?但是如何判断用户系统是否已创建此数据库?

我不希望每次都会运行rake db:setup会丢弃用户数据库。 我想我每次都可以运行rake db:create && rake db:migrate但是除了现在属于rake db:seed进程的rake任务之外,用户还需要运行db:setup

1 个答案:

答案 0 :(得分:1)

我的建议是编写一个ruby脚本来运行rails runner或rake任务,你可以在其中定义database_exists?像这样的方法:

def database_exists?
  ActiveRecord::Base.connection
rescue ActiveRecord::NoDatabaseError
  false
else
  true
end

<强>文档