lib/koine/attributes/adapter/base.rb in koine-attributes-1.0.0 vs lib/koine/attributes/adapter/base.rb in koine-attributes-1.1.0
- old
+ new
@@ -1,9 +1,15 @@
module Koine
module Attributes
module Adapter
class Base
+ attr_accessor :attribute_name
+
+ def initialize
+ @attribute_name = 'AnonymousAttribute'
+ end
+
def coerce(value)
return coerce_nil if value.nil?
coerce_not_nil(value)
end
@@ -32,11 +38,11 @@
def coerce_nil
if @nil_value_set
return @nil_value.respond_to?(:call) ? @nil_value.call : @nil_value
end
- raise ArgumentError, 'Cannot be nil'
+ raise ArgumentError, 'Cannot be nil', attribute_name
end
def coerce_not_nil(_value)
raise NotImplementedError
end
@@ -48,9 +54,15 @@
unless value.is_a?(::Symbol)
value = value.dup if value.respond_to?(:dup)
end
value.freeze
+ end
+
+ def wrap_errors
+ yield
+ rescue StandardError => error
+ raise Koine::Attributes::ArgumentError.new(error, attribute_name)
end
end
end
end
end