Method: Settis::Container#setting

Defined in:
lib/settis/container.rb

#setting(name, type, options = {}) ⇒ Object

Defines a new setting.

Parameters:

  • name (Symbol, String)

    The name of the setting.

  • type (Symbol, Class)

    The type of the setting.

  • options (Hash) (defaults to: {})

Options Hash (options):

  • :default (Object)

    The default value of the setting. Not supported for lists, sets, and hashes.

Raises:

  • (ArgumentError)


43
44
45
46
47
48
49
50
51
52
53
# File 'lib/settis/container.rb', line 43

def setting(name, type, options = {})
  @settings ||= {}

  name = name.to_s
  raise ArgumentError, "The setting '#{name}' already exists." if @settings.key?(name)

  serializer = Serializer.for(type)
  raise ArgumentError, "Unknown setting type '#{type}'." if serializer.nil?

  @settings[name] = ScalarSetting.new(self, name, serializer.new(type), options)
end