How to check if the database exists or not in rails before doing a rake db:setup

后端 未结 7 1297
你的背包
你的背包 2020-12-05 23:58

How to check if the database exists or not in rails before doing a rake db:setup?

I would like to check if a database already exists before a db:create is being done

7条回答
  •  执笔经年
    2020-12-06 00:18

    I made a rake task that expands on some of the previous answers. I use this a lot in a Vagrant+Docker setup, so I can very easily issue a single command and either create a new database or issue a migrate to the current database. I use a branched database paradigm for development. I constantly need to seed a new database or update my existing one.

    In lib/tasks/db_exists.rake:

    namespace :db do
      desc "Checks to see if the database exists"
      task :exists do
        begin
          Rake::Task['environment'].invoke
          ActiveRecord::Base.connection
        rescue
          exit 1
        else
          exit 0
        end
      end
    end
    

    So now I can run a simple bash command:

    rake db:exists && rake db:migrate || rake db:setup
    

    Which I have then further automated into a Makefile (trimmed for brevity):

    .PHONY database
    database:
            rake db:exists && rake db:migrate || rake db:setup
    

    Translates into:

    make database
    

    For all of my local database needs.

提交回复
热议问题