System Engineer
June 22, 2022
Конфигурация для проекта на ruby
Один из возможных вариантов для подгрузки файла конфигурации проекта на ruby. Если вы знаете как можно сделать еще лучше, напишите мне на почту или в телеграм. Цель данного поста - обмен опыта.
module Example DefaultConfig = Struct.new(:file, :settings) do def initialize self.file = '.examples.yaml' begin self.settings = YAML.safe_load(ERB.new(File.read(file)).result) rescue => e STDERR.puts "Error when load YAML config: #{e}" raise "Can't load default settings" end end end def self.configure @config ||= DefaultConfig.new.settings yield(@config) if block_given? @config end def self.config @config || configure end def self.reset @config = nil end end
Конфигурацию можно менять на лету следующим способом
Example.configure do |config| config[:date_now] = DateTime.now() end
Для доступа к любому значению в конфигурации можно использовать метод dig
Example.config.dig 'config','path'