独自のRails設定ファイルを定義する方法
設定ファイルのような流動的な値は環境変数を用いたりするが、個人的には環境変数よりも設定ファイルに残したいと思っている。 今回はパスワードのようにSCMへ保存するものではないので注意。
class Foo
BAR = "baz".freeze
def qux
BAR
end
end
設定ファイルのような概念までは不要な場合、定数にしてしまうのが最も簡単かもしれない。 ただしRailsなどのようなアプリケーションではこのようなファイルをどこに保存しようか悩みがちである。 またこれは好みだけれども、複数の設定項目がある場合、それだけ定数が複数存在するのも好ましく思えない。
Custom Configurationにもいくつか紹介されているようだが、今回はRails::Application.config_for
の方法を使う。
# config/settings.yml
shared:
bar: baz
# config/application.rb
module MyApp
class Application < Rails::Application
config.settings = config_for(:settings)
end
end
class Foo
SETTINGS = Rails.configuration.settings
def qux
SETTINGS[:bar] #=> baz
end
end
コード例では割愛しているが、個人的にはこのアプローチはなかなか気に入っている。
Read other posts