Railsではアプリ別のconfigファイルを楽に管理できるgemは色々存在しています、例えば:
Figaro:https://github.com/laserlemon/figaro
Rails_config:https://github.com/railsconfig/rails_config
figaroの場合は全部config/application.ymlにまとめて管理し、rails_configも環境によって三つのファイルに管理となります。両方とも限っているファイルで全部設定をまとめて書こうという方針になります。でも設定ファイルがすごくややこしいアプリは存在するでしょう。
たとえば、国際化をするため、日本人向けに設定が別で、インドネシア人向けに設定が別で、全部まとめて書いておくと、とてもみづらくなるかなと思います:
# application.yaml
en:
config1:
a: 1
B: 2
c: 3
key1 :xxx
key2 :yyy
jp:
config2:
.
.
.
みたいになん百行も続くになってしまい、修正と管理がややこしくなるでしょう。
なので、フォルダ で分離して管理した方がようかなと思います。
例えば、上のファイルを以下のようにフォルダを分離すればよいでしょう
config-
|--en
|-- |--conf.yml
|--jp
|-- |--conf.yml
こうみたいな分離仕方ができるように、フォルダ構成をもとづいて、configファイルを管理できるgemを作りました:
https://github.com/huydx/tree_config
gemの使い方はすごく簡単で、
gem install tree_config
してから
rails g tree_config:install
をしたら、config/settingsが生成される。
そのフォルダの中に、例えば
-config
|-folder1
-A.yml
-B.yml
|-folder2
|-folder3
-C.yml
のフォルダ構成を作成しておくと、Railsアプリの中で、グロバルSettings変数から
Settings.folder1.A
みたいにA.ymlの内容を参考できるよになる。
細かい使い方は、specのテストファイルに書いてありますので、参考して頂ければと思います。
そうやれば設定のファイルをフォルダで分離ができ、すごく簡潔に設定ファイルを管理できると思います。