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'