Sha256: 6ffcdf78d8d73f5b44f3de1f7391e0055e51ace8f8d5aa1eba1a9aa549f3583b
Contents?: true
Size: 1.42 KB
Versions: 1
Compression:
Stored size: 1.42 KB
Contents
require 'yaml' require 'erb' require "couchbase_settings/version" COUCHBASE_PATH = "#{File.dirname(__FILE__)}/couchbase_settings" puts COUCHBASE_PATH require "#{COUCHBASE_PATH}/railtie.rb" module CouchbaseSettings class UndefinedCouchbaseSettings < StandardError; end class << self def setup! find_ymls.each do |yml| create_cbsettings_class(yml) end end def find_ymls main_file = "#{Rails.root.to_s}/config/couchbase.yml" couchbase_main_file = File.exists?(main_file) ? [main_file] : [] couchbase_namespaced_files = Dir.glob("#{Rails.root.to_s}/config/couchbase/**/*.yml") couchbase_main_file.concat(couchbase_namespaced_files) end def create_cbsettings_class(yml_file) hash = load_yml(yml_file) klass_name = File.basename(yml_file).gsub(".yml","").camelize klass_name = "#{klass_name}CouchbaseSetting" unless klass_name=="CouchbaseSetting" klass = Object.const_set(klass_name,Class.new) hash.each do |key,value| klass.define_singleton_method(key){ value } end klass.class_eval do def self.method_missing(method_id,*args) raise UndefinedCouchbaseSettings, "#{method_id} is not defined in #{self.to_s}" end end end def load_yml(yml_file) erb = ERB.new(File.read(yml_file)).result erb.present? ? YAML.load(erb).to_hash[Rails.env] : {} end end # class << self end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
couchbase-settings-0.0.6 | lib/couchbase_settings.rb |