lib/recurly/resource.rb in recurly-2.7.3 vs lib/recurly/resource.rb in recurly-2.7.4

- old
+ new

@@ -138,25 +138,34 @@ # begin # Recurly::Account.create! :first_name => "Flynn" # rescue Recurly::Resource::Invalid => e # e.record.errors # => errors: {"account_code"=>["can't be blank"]}> # end - class Invalid < API::UnprocessableEntity + class Invalid < Error # @return [Resource, nil] The invalid record. attr_reader :record - def initialize(record_or_message) - set_message case record_or_message - when Resource - @record = record_or_message - record_or_message.errors.map { |k, v| "#{k} #{v * ', '}" }.join '; ' + def initialize(message) + if message.is_a? Resource + @record = message + set_message(record_to_message) else - record_or_message + set_message(message) end end + + private + + def record_to_message + @record.errors.map do |k, v| + message = v.join(', ') + k == 'base' ? message : "#{k} #{message}" + end.join('; ') + end end + class << self # @return [String] The demodulized name of the resource class. # @example # Recurly::Account.name # => "Account" def resource_name @@ -405,15 +414,15 @@ :method => el.attribute('method').to_s, :href => el.attribute('href').value } next end - + # Nokogiri on Jruby-1.7.19 likes to throw NullPointer exceptions # if you try to run certian operations like el.attribute(''). Since # we dont care about text nodes, let's just skip them - next if defined?(Nokogiri::XML::Node::TEXT_NODE) && el.node_type == Nokogiri::XML::Node::TEXT_NODE - + next if defined?(Nokogiri::XML::Node::TEXT_NODE) && el.node_type == Nokogiri::XML::Node::TEXT_NODE + if el.children.empty? && href = el.attribute('href') klass_name = Helper.classify(klass.association_class_name(el.name) || el.attribute('type') || el.name)