12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/kennel/settings_as_methods.rb', line 12
def settings(*names)
duplicates = (@settings & names)
if duplicates.any?
raise ArgumentError, "Settings #{duplicates.map(&:inspect).join(", ")} are already defined"
end
overrides = ((instance_methods - self::SETTING_OVERRIDABLE_METHODS) & names)
if overrides.any?
raise ArgumentError, "Settings #{overrides.map(&:inspect).join(", ")} are already used as methods"
end
@settings.concat names
names.each do |name|
next if method_defined?(name)
define_method name do
message = "Trying to call #{name} for #{self.class} but it was never set or passed as option"
raise_with_location ArgumentError, message
end
end
end
|