Module: Settings::Setting::Assignment

Extended by:
Assignment
Included in:
Assignment, Attribute, Object
Defined in:
lib/settings/setting/assignment.rb

Defined Under Namespace

Modules: Attribute, Object

Instance Method Summary collapse

Instance Method Details

#assign(receiver, attribute, value, strict = false) ⇒ Object



10
11
12
13
14
15
16
17
# File 'lib/settings/setting/assignment.rb', line 10

def assign(receiver, attribute, value, strict=false)
  settable = assure_settable(receiver, attribute, strict)
  if settable
    assign_value(receiver, attribute, value)
  end

  receiver
end

#assign_value(receiver, attribute, value) ⇒ Object



19
20
21
22
23
24
25
# File 'lib/settings/setting/assignment.rb', line 19

def assign_value(receiver, attribute, value)
  logger.trace { "Assigning to #{attribute}" }
  receiver.public_send("#{attribute}=", value).tap do
    logger.debug { "Assigned to #{attribute}" }
    logger.debug(tag: :data) { "#{attribute}: #{value}" }
  end
end

#assignable?(receiver, attribute) ⇒ Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/settings/setting/assignment.rb', line 32

def assignable?(receiver, attribute)
  receiver.respond_to? setter_name(attribute)
end

#digest(receiver, attribute, strict) ⇒ Object



40
41
42
43
44
45
46
47
# File 'lib/settings/setting/assignment.rb', line 40

def digest(receiver, attribute, strict)
  content = []
  content << "Attribute: #{attribute}" if attribute
  content << "Receiver: #{receiver.class.name}"
  strict = "<not set>" if strict.nil?
  content << "Strict: #{strict}"
  content.join ', '
end

#loggerObject



6
7
8
# File 'lib/settings/setting/assignment.rb', line 6

def logger
  @logger ||= Log.get(self)
end

#setter_name(attribute) ⇒ Object



36
37
38
# File 'lib/settings/setting/assignment.rb', line 36

def setter_name(attribute)
  :"#{attribute.to_s}=" unless attribute.to_s.end_with? '='
end

#setting?(receiver, attribute) ⇒ Boolean

Returns:

  • (Boolean)


27
28
29
30
# File 'lib/settings/setting/assignment.rb', line 27

def setting?(receiver, attribute)
  receiver_class = receiver.class
  Settings::Registry.instance.setting? receiver_class, attribute
end