Sha256: d5f0005f8d7ae45c868ed2bcb868cd8eb7f94b45cdc735fecbe761a021b24bf8

Contents?: true

Size: 1.04 KB

Versions: 4

Compression:

Stored size: 1.04 KB

Contents

module Figleaf
  module LoadSettings
    extend ActiveSupport::Concern

    module ClassMethods
      # Load all files in config/settings and set their contents as first level
      # citizen of Settings:
      # config/settings/some_service.yml contains
      # production:
      #   foo: bar
      # --> Settings.some_service.foo = bar
      def load_settings
        Dir.glob(root.join('config', 'settings', '*.yml')).each do |file|
          property_name = File.basename(file, '.yml')
          property = YAML.load_file(file)[env]
          property = use_hashie_if_hash(property)
          self.configure_with_auto_define do |s|
            s.send("#{property_name}=", property)
          end
        end
      end

      def root
        return Rails.root if defined?(Rails)
        Pathname.new('.')
      end

      def env
        return Rails.env if defined?(Rails)
        ENV['ENVIRONMENT']
      end

      def use_hashie_if_hash(property)
        return Figleaf::Fighash.new(property) if property.is_a?(Hash)
        property
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
figleaf-0.0.7 lib/figleaf/load_settings.rb
figleaf-0.0.6 lib/figleaf/load_settings.rb
figleaf-0.0.5 lib/figleaf/load_settings.rb
figleaf-0.0.4 lib/figleaf/load_settings.rb