現在awsで作成しているアプリケーションをデプロイ中に
dotenv-rails必要あるのかと思ったので投稿
####・dotenv-rails
とは
Railsで使える環境変数を管理できるgem(dotenv-rails)や.envの導入方法
簡単にいうと自分で変数セットしていろんなところで使えちゃいます。ということなのだが
rails5.2からはcredentials.yml.enc
という物がデフォルトで追加されています。皆さんのconfigフォルダの中にも存在すると思います。これも環境変数指定できいろんなところで使えちゃいます。
どっちも同じならどっち使ってもいいじゃん!て思いますよね〜
ただただ変数をセットするdotenv-rails
とは違いcredentials.yml.enc
は暗号化して環境変数を保持するんです!そしてconfig/master.keyを使って複合して使うという違いがあります。
環境変数は見られたくないんだけど〜っていうところに使う物なので暗号化は大切ですね!
もしdotenv-rails
を使い大事な値を.envで管理していると何かの拍子にフォルダを見られた際にふむふむここねといって.env内見られたら終わりです。
credentials.yml.enc
であれば見られても暗号化されているので「わけワカメ」となるわけですね。
#####おまけ
credentials.yml.enc
はgitに上げてもmaster.keyがないかぎり他の人はどうしようもないのでデプロイの際にcloneで持ってきてmaster.keyをローカルから引っ張ってこれば使えちゃうんですよね。
セキュリティー面を考えたらこっちの方が良いのは明らかですねー
ただcredentials.yml.enc
を使用する時には
Rails.application.credentials.セットした環境変数
#dotenv-railsだと
ENV['セットした環境変数']
長い!! でもVScodeだと何回か打ってると予測してくれるから問題なし
そして環境変数を設定するときも(dockerだと)
docker-compose run -e EDITOR="vim" web rails credentials:edit
でvim開いて編集という面倒くささはあります。
ちなみにFile encrypted and saved.とでてしまう人は多分vimが入っていないのでinstallしてください
僕の場合だと
Dockerfile
#追加 apt-get install vim
いやーまだまだ知らないことがたくさんあって面白いな〜
何か間違っていたらご教授お願いします。
では〜⭐️