database.ymlにユーザー名やパスワードを平文で入力しGithub等にあげてしまうと、セキュリティ上の問題が発生する。そこで何かしらの方法で隠す必要があるが、その時の2つのパターンを説明します。
#●環境変数の使用
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: <%= ENV['DB_USERNAME'] %>
password: <%= ENV['DB_PASSWORD'] %>
host: localhost
<%= ENV['DB_USERNAME'] %>に該当する部分が環境変数を利用している部分です。
このコードを記載しておき
$ export DB_USERNAME =sample_user
$ rails server
と実行すれば、<%= ENV['DB_USERNAME'] %>の部分にsample_userが代入され実行される。
#●credentials.yml.encの使用(rails5.2以降)
rails5.2以降では、credentials.yml.encを使用し、管理する方法がある。
vimを使用するため、アレルギーを発症する人もいるかもしれない(自分がそう)ですが、慣れておくと今後便利なので、できればこちらの方法をおすすめします。
使用方法は
$ EDITOR="vi" bin/rails credentials:edit
db:
username: sample_user
password: sample_password
このように情報を格納し、出力時は
default: &default
username: <%= Rails.application.credentials.db[:username] %>
password: <%= Rails.application.credentials.db[:password] %>
host: localhost
とすることで代入され実行できる。
ちなみにvim実行時のコマンドで、本当に最低限覚えておく必要があるもを下記にまとめました。本当に最低限なので、別途学習してください。
・コマンドモード
vim実行時の最初の状態。最低限のコマンドを下記に記載
:wq #ファイルを上書き保存して終了
:q #上書きせずに終了
:q! #上書きせず強制終了
shift+zz #ファイルに変更があれば保存して終了、なければ上書きせずに終了
・インサートモード
コマンドモード時、iを押すと切り替わり、入力ができるようになる。コマンドモードへ戻る際は、escキーを押す。
#●まとめ
パスワード管理方法をまとめた。AWS周囲をいじるとvimを使用する機会が増えるため、これからポートフォリオ作成を行うレベル感の方は、慣れておく意味でもcredentials.yml.encの使用をおすすめします。