Sha256: ce450c2a8bab291619681d76523b2bc7dbd42428139697e0afbc9acfe63921df

Contents?: true

Size: 872 Bytes

Versions: 2

Compression:

Stored size: 872 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 || Rails.root.join("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[Rails.env] || {}
      replace hash
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rails-settings-cached-0.7.2 lib/rails-settings/default.rb
rails-settings-cached-0.7.1 lib/rails-settings/default.rb