前言我已阅读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
。
答案 0 :(得分:1)
我的建议是编写一个ruby脚本来运行rails runner
或rake任务,你可以在其中定义database_exists?像这样的方法:
def database_exists?
ActiveRecord::Base.connection
rescue ActiveRecord::NoDatabaseError
false
else
true
end
<强>文档强>