LoginSignup
1
2

More than 3 years have passed since last update.

[Rails]本番環境のデータベースをリセットする方法(Capistrano版)

Posted at

はじめに

前提

・Railsを使用してアプリケーションを開発
・Capistranoでの自動デプロイを実装している
・AWSのEC2にてサーバーを構築している
・RDSでMySQLを使用している

背景

私は開発環境では、rails db:migrate:resetにていつもデータベースを作り直していましたが、本番環境ではどのようにすればいいのかという疑問から実装しました。

本番環境のデータベースをリセットする

まずはターミナルを用いてEC2で自分のアプリケーションフォルダの階層まで進む。
Capistranoでの実装をしているのでミスをしないように基本的にはcurrentディレクトリで作業するようにする。

terminal
[ec2-user@ip-222-22-2-222 アプリ名]cd current
current
RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rails db:drop

これでデータベースが消去することができました。

データベース再度作成する

今回はRDSにMySQLを導入している前提でお話していきます。
まず引き続きターミナルは同じディレクトリでmysqlに接続します。

mysql -u (マスタユーザ名) -p -h (エンドポイント)
「-u」はユーザ名、「-p」はパスワードの入力、「-h」は接続先の情報を表すオプションです。
なお、「エンドポイント」は、RDSメニューで確認し、入力してください。
「パスワード」は、「マスターパスワード情報」で設定したパスワードを入力します。

terminal
mysql -u root -p -h rds-mysql-server.xxx.ap-northeast-1.rds.amazonaws.com

このコマンドを打つとpasswordの入力が求められるので入力すると無事mysqlに接続が完了しました。

削除したアプリケーション名と同じ名前をつけデータベースを再度作成します。

terminal
mysql> create database アプリケーション名;

再度本番環境でmigrateを実行します。

terminal
bundle exec rails db:migrate RAILS_ENV=production

これでデータベースのリセットは終了です。
あとは本番環境でcapistranoのコマンドを叩いて終了です

terminal
bundle exec cap production deploy

お読みいただきありがとうございました

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2