Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
398
Help us understand the problem. What is going on with this article?

More than 5 years have passed since last update.

@closer

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

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

これは、仕組みとしてはとても簡単なもので、カレントディレクトリに .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株式会社 では一緒に切磋琢磨できる仲間を募集しています! ぜひこちらをごらんください!

398
Help us understand the problem. What is going on with this article?
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
398
Help us understand the problem. What is going on with this article?