Help us understand the problem. What is going on with this article?

環境によって変わる設定値はdotenvを使うと便利

More than 5 years have passed since last update.

Railsの環境のよって変わる設定値をどうするか問題については、rails_configとかsettingslogicなどのgemがよく紹介されているけど、今回はdotenvというgemを紹介したいと思います。

http://rubygems.org/gems/dotenv

これは、仕組みとしてはとても簡単なもので、カレントディレクトリに .env という名前で環境変数を書き込んでおくと、自動的に ENV の中にその値を追加してくれるというものです。

もともと foreman の機能でしたが、切り出されて別のgemになりました。

なので foreman や heroku を使っている人は知っているかと思います。

# .env
AWS_ACCESS_KEY_ID="hogehoge"
AWS_SECRET_ACCESS_KEY="mogamoga"
puts ENV["AWS_ACCESS_KEY_ID"] # => nil
Dotenv.load
puts ENV["AWS_ACCESS_KEY_ID"] # => "hogehoge"

Railsの場合は、dotenv-railsを使います。自動でDotenv.loadしてくれます。

gem 'dotenv-rails'

この.envファイルはVCSにコミットせず、それぞれの開発環境で設定します。

なぜこれが便利なのかというと、設定値へは常に ENV を使ってアクセスすることができるからです。

それが元々環境変数として設定されているのか、.env で設定されているのかは意識する必要がありません。

本番サーバでは環境変数として設定されていて、開発環境ではほかのプロジェクトと競合するなどの理由でグローバルに設定できない設定値も、プロジェクトごとにローカルに設定することができます。

さらに、/bin/dotenv というコマンドを使うと、ruby でないコマンドでも.envの設定を引き継いで実行することができます。

ところで

Repro株式会社 では一緒に切磋琢磨できる仲間を募集しています! ぜひこちらをごらんください!

closer
こんにりは
repro
世界59か国6,500以上の導入実績を持つCE(カスタマーエンゲージメント)プラットフォーム「Repro(リプロ)」を提供
https://repro.io/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした