Sha256: f46c7f7d7528ae7d1e9944955154b98c9255943355ade64eb32082a6bc352fd7

Contents?: true

Size: 728 Bytes

Versions: 23

Compression:

Stored size: 728 Bytes

Contents

class Settings

  def initialize(attributes={})
    attributes.each do |key, value|
      self[key] = value
    end
  end

  def [](name)
    fetch(name, nil)
  end

  def fetch(name, *args)
    setting = settings.find { |setting| setting.name == name }
    return setting.value if setting
    raise KeyError, "key not found: #{name.inspect}" if args.empty?
    args.first
  end

  def []=(name, value)
    setting = settings.find { |setting| setting.name == name }
    settings << (setting = Setting.new(name: name)) unless setting
    setting.value = value
  end

  def save!
    settings.each do |setting|
      setting.save if setting.changed?
    end
  end

private

  def settings
    @settings ||= Setting.all
  end

end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
houston-core-0.8.4 app/models/settings.rb
houston-core-0.8.3 app/models/settings.rb
houston-core-0.8.2 app/models/settings.rb
houston-core-0.8.1 app/models/settings.rb
houston-core-0.8.0 app/models/settings.rb
houston-core-0.8.0.pre2 app/models/settings.rb
houston-core-0.8.0.pre app/models/settings.rb
houston-core-0.7.0 app/models/settings.rb
houston-core-0.7.0.beta4 app/models/settings.rb
houston-core-0.7.0.beta3 app/models/settings.rb
houston-core-0.7.0.beta2 app/models/settings.rb
houston-core-0.7.0.beta app/models/settings.rb
houston-core-0.6.3 app/models/settings.rb
houston-core-0.6.2 app/models/settings.rb
houston-core-0.6.1 app/models/settings.rb
houston-core-0.6.0 app/models/settings.rb
houston-core-0.5.6 app/models/settings.rb
houston-core-0.5.5 app/models/settings.rb
houston-core-0.5.4 app/models/settings.rb
houston-core-0.5.3 app/models/settings.rb