Sha256: c15ffbbdbc2be91a9f586d0f0e528ec2024d4695159bff79d43821f620e50e01

Contents?: true

Size: 732 Bytes

Versions: 1

Compression:

Stored size: 732 Bytes

Contents

dir = File.join(File.dirname(__FILE__))

Dir.glob(File.join(dir, "rsettings", "**", "*.rb")).each {|f| require f}

class Settings
  def initialize(&block)
    @config = SettingsConfiguration.new

    if block_given?
      @config = SettingsConfiguration.new.tap do |conf|
        conf.instance_exec &block
      end
    end
  end

  def method_missing(m, *args, &block)
    fail "Only support queries, cannot do <#{m}>" unless args.empty?

    setting_name = @config.name_for m
    
    EnvironmentSettings.new.get(setting_name)
  end
end

class SettingsConfiguration
  def let(opts = {})
    _opts.merge! opts.invert
  end

  def name_for(setting)
    _opts[setting] || setting
  end

  private

  def _opts; @opts ||= {}; end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rsettings-0.1.0 lib/rsettings.rb