Sha256: c231d633a59caefd790279dd63da0c47df95793da0e3135544ebbff95184d436

Contents?: true

Size: 883 Bytes

Versions: 1

Compression:

Stored size: 883 Bytes

Contents

require "digest/md5"

module RailsSettings
  class Default < ::Hash
    class MissingKey < StandardError; end

    class << self
      def enabled?
        source_path && File.exist?(source_path)
      end

      def source(value = nil)
        @source ||= value
      end

      def source_path
        @source || "config/app.yml"
      end

      def [](key)
        # foo.bar.dar Nested fetch value
        return instance[key] if instance.key?(key)
        keys = key.to_s.split(".")
        instance.dig(*keys)
      end

      def instance
        return @instance if defined? @instance
        @instance = new
      end
    end

    def initialize
      content = open(self.class.source_path).read
      hash = content.empty? ? {} : YAML.load(ERB.new(content).result).to_hash
      hash = hash[Sinatra::Application.environment.to_s] || {}
      replace hash
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
jdx-rails-settings-0.7.4 lib/rails-settings/default.rb