rake db:setupを実行する前にデータベースがレールに存在するかどうかを確認する方法は?
db:create が行われる前に、データベースが既に存在するかどうかを確認したいと思います。これまでレールで特定の方法を見たことはありませんが、これはmysqlスクリプトを使用して実行できることを知っています
rake db:setupを実行する前にデータベースがレールに存在するかどうかを確認する方法は?
db:create が行われる前に、データベースが既に存在するかどうかを確認したいと思います。これまでレールで特定の方法を見たことはありませんが、これはmysqlスクリプトを使用して実行できることを知っています
データベースがすでに存在するかどうかを確認する方法は次のとおりです。
def database_exists?
ActiveRecord::Base.connection
rescue ActiveRecord::NoDatabaseError
false
else
true
end
参考文献
この目的のために作成したいくつかの bash スクリプトを次に示します。
if echo "\c $PGDATABASE; \dt" | psql | grep schema_migrations 2>&1 >/dev/null
then
bundle exec rake db:migrate
else
bundle exec rake db:setup
fi
if echo "use $MYSQLDATABASE; show tables" | mysql | grep schema_migrations 2>&1 > /dev/null
then
bundle exec rake db:migrate
else
bundle exec rake db:setup
fi
schema_migrations
これらは、テーブルの存在をチェックして、rake db:setup
以前に実行されたかどうかを判断します。
DBの状態を確認するために使用するものは次のとおりです。
if db_version=$(bundle exec rake db:version 2>/dev/null)
then
if [ "$db_version" = "Current version: 0" ]; then
echo "DB is empty"
else
echo "DB exists"
fi
else
echo "DB does not exist"
fi