[Rails6の新機能を試してみる] Rails6のcredentialは環境で分けることができる

投稿者: | 2019年10月6日

Rails5(確か5.2から?)から新しく入った credential機能があります。

これは、定数などを暗号化して格納してくれる機能です。例えば部外者から見られたくないパスワードなどの情報をここに保管することでセキュリティを高めることができます。

なんと、rails6ではこのcredentialファイルが環境別に分けることができるようになりました。ので、そのやり方をまとめていきたいと思います。

credentialファイルの編集

まずはcredentialファイルの編集方法についてまとめます。

暗号化がかかっているファイルをどのように編集するのでしょうか?

編集コマンド

railsのコマンドでしか編集ができないようになっています。

編集コマンドは下記です。このコマンドを打つと viが立ち上がり、credentialファイルが編集できるようになります。

デフォルトで下記のようになっている(はず)。

これに、例に倣って定数を追加していきます。試しにやってみましょう。

編集して保存

追記したら :wqで保存します。

となったら成功です。

ではプロジェクトから呼び出してみましょう。

呼び出す

コンソールから呼び出してみましょう。

出ましたね。さて、これからが新機能の紹介です。次は test環境用の credentialを編集してみましょう。

環境を指定する

どうやって環境別のcredentialファイルを編集するのか。それは先ほど行った編集コマンドに環境を指定することで可能になります。

先ほどのコマンドに --environmentオプションを指定します。

ファイルがこのようになっていますでしょうか?先ほど追記した master_user_nameがありませんね。そうです、先ほどのは development環境用で、今回開いたのが test環境用だからです。実質的にこれらは別ファイルという扱いになります。

では先ほどを同じように master_user_idというキーで追加していきます。

では呼び出してみましょう

test環境用の定数を呼び出す

今回は test環境で実行する必要があるので下記のようにコンソールを出します。そして同じようにcredentialの master_user_nameを取得してみます。

成功しましたね。このように、rails6ではcredentialを編集するときに環境を指定することができるようになりました。

まとめ

rails5では自分で、環境別に定数をネストしていたところを、編集時に環境変数が使えるようになったのは大きなプラスだと思います。便利そうなので使っていきたいと思います。

最後まで読んでくださりありがとうございました。