Ruby on Railsで環境ごとの設定をYAMLに読み込むコードです。
😀 initializers/load_config.rb
initializers/load_config.rb
でYAMLの設定を読み込んでRails.application.config
に設定する手順です。
def load_config(key, filepath) yml = YAML.load_file(filepath).symbolize_keys raise "No such file #{filepath}" if yml.blank?
config = yml[Rails.env.to_sym] raise "No such environment #{Rails.env} on #{filepath}" if config.blank?
Rails.application.config.send("#{key}=", ActiveSupport::InheritableOptions.new(config.deep_symbolize_keys)) end
load_config(:examle, Rails.root.join('config', 'example.yml'))
|
🍣 config/example.yml
設定値の書かれたYAMLを設置します。
default: &default message: "hoge"
development: <<:< span> *default
production: <<:< span> *default message: "fuga"
|
🚜 Rails内での利用方法
Ruby on Rails内で実際に利用する手順はこちら。
$ rails console RAILS_ENV=development > Rails.application.config.example.message
$ rails console RAILS_ENV=production > Rails.application.config.example.message
|
🍮 補足:database.ymlとDATABASE_URLの変換
config/database.yml
から、DATABASE_URL
を生成するための方法です。事前にgem install database_url
で「database_url - GitHub」を追加します。
require 'database_url'
c = YAML.load_file('/path/to/config/database.yml') => {"development"=>{"adapter"=>"mysql2", "database"=>"myapp_development", "username"=>"root", "password"=>"password", "encoding"=>"utf8"}, "test"=>{"adapter"=>"mysql2", "database"=>"myapp_test", "username"=>"root", "password"=>"password", "encoding"=>"utf8"}, "production"=>{"adapter"=>"mysql2", "database"=>"myapp", "username"=>"myapp", "password"=>"XXX", "encoding"=>"utf8"}, "cucumber"=>{"adapter"=>"mysql2", "database"=>"myapp_cucumber", "username"=>"root", "password"=>"password", "encoding"=>"utf8"}}
DatabaseUrl.to_active_record_url(c['development']) => "mysql2://root:password@127.0.0.1/myapp_development?encoding=utf8"
|
😎 補足:RailsのDBの設定値の取得
次のコマンドで、Railsの現在の設定値を取得できます。
db_config = Rails.configuration.database_configuration db_username = db_config[Rails.env]["username"] db_password = db_config[Rails.env]["password"]
|
🎉 参考リンク
🖥 VULTRおすすめ
「VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。
最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!