10
10

More than 5 years have passed since last update.

Railsアプリの複雑な設定ファイルを、簡潔に管理できるようにする方法

Last updated at Posted at 2014-08-22

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のテストファイルに書いてありますので、参考して頂ければと思います。

そうやれば設定のファイルをフォルダで分離ができ、すごく簡潔に設定ファイルを管理できると思います。

10
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10