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