Sha256: b4c60eda19bf6a54ce8c4e417e5f9a82714da7d21438218cdc1b5000e37cc63a

Contents?: true

Size: 1.02 KB

Versions: 2

Compression:

Stored size: 1.02 KB

Contents

require 'erb'
require 'yaml'

require 'rest-graph'

class RestGraph < RestGraphStruct
  module LoadConfig
    module_function
    def auto_load!
      LoadConfig.load_if_rails!
    end

    def load_if_rails!
      return unless Object.const_defined?(:Rails)
      root = Rails.root
      file = ["#{root}/config/rest-graph.yaml", # YAML should use .yaml
              "#{root}/config/rest-graph.yml"].find{|path| File.exist?(path)}
      return unless file

      LoadConfig.load_config!(file, Rails.env)
    end

    def load_config! file, env
      config   = YAML.load(ERB.new(File.read(file)).result(binding))
      defaults = config[env]
      return unless defaults

      mod = Module.new
      mod.module_eval(defaults.inject([]){ |r, (k, v)|
        r << <<-RUBY
               def default_#{k}
                 # quote strings, leave others free (e.g. false, numbers, etc)
                 #{v.kind_of?(String) ? "'#{v}'" : v}
               end
               RUBY
      }.join)

      RestGraph.send(:extend, mod)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rest-graph-1.1.1 lib/rest-graph/load_config.rb
rest-graph-1.1.0 lib/rest-graph/load_config.rb