1
1

More than 1 year has passed since last update.

railsコンソール:実行環境の切替え

Last updated at Posted at 2021-07-20

はじめに

テストコードを書く際に、データベースに値を入れて検証したいと思ったが
コンソールがデフォルトだとdevelopment(開発環境)だと気づく。

テスト環境や本番環境など、別環境への切替方法を調べたので
記録として残しておく。

■使用データベース: MySQL

実行環境の種類

実行環境は3つ存在するので、状況に応じて切り替えする。

  1. 開発環境 (development)
  2. テスト環境 (test)
  3. 本番環境 (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> 

すると、表示されている環境が
developmenttestに変更されているのが分かる。

データベースへ値の入力

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.

終わりに

簡単な内容ではあるが、まとめてみた。

今後も学習記録を残す。

以上。

1
1
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
1