21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/phronomy/workflow_context.rb', line 21
def field(name, type: :replace, default: nil)
if default.is_a?(Array) || default.is_a?(Hash)
raise ArgumentError,
"Mutable default for field #{name.inspect} must be wrapped in a Proc " \
"to avoid shared state across instances. " \
"Use `default: -> { #{default.inspect} }` instead."
end
@fields[name] = {type: type, default: default}
attr_reader name
define_method(:"#{name}=") do |value|
_assert_write_permitted!
instance_variable_set(:"@#{name}", value)
end
end
|