Class: RailsSettings::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/rails-settings/configuration.rb

Instance Method Summary collapse

Constructor Details

#initialize(*args, &block) ⇒ Configuration

Returns a new instance of Configuration.

Raises:

  • (ArgumentError)


3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/rails-settings/configuration.rb', line 3

def initialize(*args, &block)
  options = args.extract_options!
  klass = args.shift
  keys = args

  raise ArgumentError unless klass

  @klass = klass

  if options[:persistent]
    unless @klass.methods.include?(:default_settings)
      @klass.class_attribute :default_settings
    end
  else
    @klass.class_attribute :default_settings
  end

  @klass.class_attribute :setting_object_class_name
  @klass.default_settings ||= {}
  @klass.setting_object_class_name =
    options[:class_name] || 'RailsSettings::SettingObject'

  if block_given?
    yield(self)
  else
    keys.each { |k| key(k) }
  end

  if @klass.default_settings.blank?
    raise ArgumentError.new('has_settings: No keys defined')
  end
end

Instance Method Details

#key(name, options = {}) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/rails-settings/configuration.rb', line 36

def key(name, options = {})
  unless name.is_a?(Symbol)
    raise ArgumentError.new(
            "has_settings: Symbol expected, but got a #{name.class}",
          )
  end
  unless options.blank? || (options.keys == [:defaults])
    raise ArgumentError.new(
            "has_settings: Option :defaults expected, but got #{options.keys.join(', ')}",
          )
  end
  @klass.default_settings[name] = (
    options[:defaults] || {}
  ).stringify_keys.freeze
end