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 . I have not seen a specific way in rails so far but i know this can be done using mysql scripts
Here is a method that checks if the database already exists:
def database_exists? ActiveRecord::Base.connection rescue ActiveRecord::NoDatabaseError false else true end
References
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With