はじめに
テストコードを書く際に、データベースに値を入れて検証したいと思ったが
コンソールがデフォルトだとdevelopment(開発環境)だと気づく。
テスト環境や本番環境など、別環境への切替方法を調べたので
記録として残しておく。
■使用データベース: MySQL
実行環境の種類
実行環境は3つ存在するので、状況に応じて切り替えする。
- 開発環境 (development)
- テスト環境 (test)
- 本番環境 (production)
コンソール
記述したコードが正しく動作しているかを確認するもの。
rails c
コマンドで起動できる。
ただし、デフォルトは開発環境。
% rails c
Running via Spring preloader in process 25986
Loading development environment (Rails 6.1.4)
irb(main):001:0>
現況確認
コンソール画面で、Rails.env
コマンドで実行すると
現在の実行環境が返答される。
irb(main):001:0> Rails.env
=> "development"
環境を切替え
コンソールから抜け出した後、linuxコマンドを打つ。
返答はないが、export RAILS_ENV=test
コマンドで
実行環境がテスト環境に変わっている。
% export RAILS_ENV=test
もし本番環境に変更したい場合は
export RAILS_ENV=production
とする。
コンソールを起動
再びrails c
コマンドを実行する。
% rails c
Running via Spring preloader in process 26085
Loading test environment (Rails 6.1.4)
irb(main):001:0>
すると、表示されている環境が
development
→ test
に変更されているのが分かる。
データベースへ値の入力
Userモデルに、新規ユーザーを作成してみる。
ちゃんと、データが作成されている様子。
irb(main):001:0> User.create(name: "Test", email: "test@mail.com", password: "1122334455")
TRANSACTION (0.3ms) BEGIN
User Exists? (0.4ms) SELECT 1 AS one FROM `users` WHERE `users`.`email` = 'test@mail.com' LIMIT 1
User Create (0.4ms) INSERT INTO `users` (`name`, `email`, `created_at`, `updated_at`, `password_digest`, `activation_digest`) VALUES ('Test', 'test@mail.com', '2021-07-20 04:33:44.655390', '2021-07-20 04:33:44.655390', '$2a$04$ScRQSjFBEzENKlmFvdh7jug0nhwLmMtjFwH2GLdapCbiEab5pk24O', '$2a$04$PYLIqUcQuXZKmv2vcq71s.FzWgPmjTBk35.Rcf4HonQYYFm1qoBCC')
TRANSACTION (0.6ms) COMMIT
MySQLで確認
showコマンドで存在するテーブルを確認後、
select文で表示カラムをnameとemailに設定して表示させる。
mysql> show tables;
+--------------------------------+
| Tables_in_<アプリ名>_test |
+--------------------------------+
| articles |
| relationships |
| users |
+--------------------------------+
mysql> select name, email from users;
+------+-------------------+
| name | email |
+------+-------------------+
| Test | test@mail.com |
+------+-------------------+
ちゃんと、ユーザーが作成されているので上手くいっているはず。
番外:DBに保存せずに検証したい
下記コマンドなら、コンソール終了後にロールバックされるので
DB上にデータが残らない。
検証はしたいが、データは残したくない場合に便利。
% rails c --sandbox
Running via Spring preloader in process 26196
Loading development environment in sandbox (Rails 6.1.4)
Any modifications you make will be rolled back on exit
Docker環境でコンソールを立ち上げる
先に、docker-composeコマンドで複数コンテナを立ち上げて
同じ様にコンソールを起動させる。
# 複数コンテナをバックグラウンドで立ち上げる
% docker-compose up -d
# 起動中コンテナの名称を確認する
% docker-compose ps
# 確認したwebサーバーのコンテナにログインする
% docker container exec -it webサーバーのコンテナ名 bash
# コンテナ内でsandboxを起動する
root@1234567890:/# rails c --sandbox
↑ プロンプトが変わる
Running via Spring preloader in process 91
Loading development environment in sandbox (Rails 6.1.4)
Any modifications you make will be rolled back on exit
irb: warn: can't alias context from irb_context.
終わりに
簡単な内容ではあるが、まとめてみた。
今後も学習記録を残す。
以上。