はじめに
CORS
の設定でこのようにドメインをベタ書きしている点が気になったので、gem config
を用いて定数管理する方法をまとめました。
config/initializers/cors.rb
Rails.application.config.middleware.insert_before 0, Rack::Cors do
allow do
origins 'http://localhost:8000'
resource "*",
headers: :any,
methods: [:get, :post, :put, :patch, :delete, :options, :head]
end
end
導入手順
Gemfile
gem 'config'
bundle install
generate
コマンドを実行すると、config
配下に環境別で定数管理できるファイルが作成されます。
rails g config:install
config/initializers/config.rb
config/settings.yml
config/settings.local.yml
config/settings/development.yml
config/settings/production.yml
config/settings/test.yml
ファイル名 | 役割 |
---|---|
config/initializers/config.rb | 全体設定ファイル |
config/settings.yml | すべての環境で利用する定数を定義 |
config/settings.local.yml | ローカル環境で利用する定数を定義 |
config/settings/development.yml | 開発環境のみで利用する定数を定義 |
config/settings/production.yml | 本番環境のみで利用する定数を定義 |
config/settings/test.yml | テスト環境のみで利用する定数を定義 |
使用方法
yml
形式で書くことができ、Settings
はじまりで定数を呼び出すことができます。
config/settings/development.yml
front_domain: http://localhost:8000
config/settings/test.yml
front_domain: http://localhost:8000
config/settings/production.yml
front_domain: https://sampleapp.com
このように各環境に同じキーで値を設定することで、呼び出しは1回で済みます。
config/initializers/cors.rb
Rails.application.config.middleware.insert_before 0, Rack::Cors do
allow do
#origins 'http://localhost:8000'
origins Settings.front_domain
resource "*",
headers: :any,
methods: [:get, :post, :put, :patch, :delete, :options, :head]
end
end