lib/settingslogic/settings.rb in settingslogic-1.0.0 vs lib/settingslogic/settings.rb in settingslogic-1.0.1

- old
+ new

@@ -1,10 +1,10 @@ module Settingslogic # = Setting # # A simple settings solution using a YAML file. See README for more information. - class Settings + class Settings < Hash class << self def name # :nodoc: instance._settings.key?("name") ? instance.name : super end @@ -35,16 +35,16 @@ # Basically if you pass a symbol it will look for that file in the configs directory of your rails app, if you are using this in rails. If you pass a string it should be an absolute path to your settings file. # Then you can pass a hash, and it just allows you to access the hash via methods. def initialize(name_or_hash = Config.settings_file) case name_or_hash when Hash - self._settings = name_or_hash + self.update name_or_hash when String, Symbol root_path = defined?(RAILS_ROOT) ? "#{RAILS_ROOT}/config/" : "" file_path = name_or_hash.is_a?(Symbol) ? "#{root_path}#{name_or_hash}.yml" : name_or_hash - self._settings = YAML.load(ERB.new(File.read(file_path)).result) - self._settings = _settings[RAILS_ENV] if defined?(RAILS_ENV) + self.update YAML.load(ERB.new(File.read(file_path)).result).to_hash + self.update self[RAILS_ENV] if defined?(RAILS_ENV) else raise ArgumentError.new("Your settings must be a hash, a symbol representing the name of the .yml file in your config directory, or a string representing the abosolute path to your settings file.") end define_settings! end @@ -53,22 +53,21 @@ def method_missing(name, *args, &block) raise NoMethodError.new("no configuration was specified for #{name}") end def define_settings! - return if _settings.nil? - _settings.each do |key, value| + self.each do |key, value| case value when Hash instance_eval <<-"end_eval", __FILE__, __LINE__ def #{key} - @#{key} ||= self.class.new(_settings["#{key}"]) + @#{key} ||= self.class.new(self["#{key}"]) end end_eval else instance_eval <<-"end_eval", __FILE__, __LINE__ def #{key} - @#{key} ||= _settings["#{key}"] + @#{key} ||= self["#{key}"] end end_eval end end end \ No newline at end of file