Sha256: 2ebf7debd28a73df5699e3377485dd002c9a9879a7cb3e32071b6ba9feb790fc
Contents?: true
Size: 1.56 KB
Versions: 4
Compression:
Stored size: 1.56 KB
Contents
module Liquidum module Options module ClassMethods def option(name, default: nil, proc: false) attr_writer(name) schema[name] = {default: default, proc: proc} if schema[name][:proc] define_method(name) do |*params| value = instance_variable_get(:"@#{name}") instance_exec(*params, &value) end else define_method(name) do instance_variable_get(:"@#{name}") end end end def schema @schema ||= {} end end def set_defaults! self.class.schema.each do |name, options| instance_variable_set(:"@#{name}", options[:default]) end end def self.included(cls) cls.extend(ClassMethods) end end class Configuration include Options option :logger, default: -> { Logger.new($stdout).tap { |l| l.level = Logger::INFO } }, proc: true option :liquidum_file_system, default: "Liquidum::LiquidumFileSystem" attr_writer :i18n_store def initialize @i18n_store = ->(context, block) {} set_defaults! end def i18n_store(context, &block) old_i18n_backend = I18n.backend I18n.backend = instance_exec(context, &@i18n_store) yield ensure I18n.backend = old_i18n_backend end end module Configurable attr_writer :config def config @config ||= Configuration.new end def configure yield(config) end alias_method :setup, :configure def reset_config! @config = Configuration.new end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
liquidum-1.2.1 | lib/liquidum/configuration.rb |
liquidum-1.2.0 | lib/liquidum/configuration.rb |
liquidum-1.1.2 | lib/liquidum/configuration.rb |
liquidum-1.1.1 | lib/liquidum/configuration.rb |