У меня есть несколько параметров конфигурации для программы, хранящейся в файле JSON.Я хочу иметь возможность доступа к опциям в нескольких разных классах без явного открытия файла и чтения конфигурации в каждом классе.Есть ли хороший, СУХОЙ способ сделать это?
Я попытался создать модуль, который считывает конфигурацию в переменную класса и просто включает модуль в каждый класс, но хорошо ли это использовать переменные класса?Чтение этого заставляет меня настороженно относиться к переменным класса.
Вот что я имею сейчас:
module Config
@@config = nil
def self.included(base)
if @@config.nil?
open('config.json', 'r') { |f| @@config = JSON.load(f) }
end
end
end
Спасибо!
Обновление:
Может быть, лучше просто поместить все классы, для которых требуется конфигурация, в собственное пространство имен?
module MyFishTank
Config = { "location" => "My room" }
Class Fish
def location
Config['location']
end
end
end
fish = MyFishTank::Fish.new
puts fish.location #=> "My room"