module GoodData::Mixin::Inspector
When an RSpec test like this fails,
expect(@my_array).to == [@some_model, @some_model2]
RSpec will call inspect on each of the objects to “help” you figure out what went wrong. Well, inspect will usually dump a TON OF SHIT and make trying to figure out why ‘@my_array` is not made up of `@some_model` and `@some_model2`.
This little module and technique helps get around that. It will redefine ‘inspect` if you include it in your model object.
You can define a whitelist of methods that inspect will dump. It will always provide ‘object_id` at a minimum.
To use it, drop it in spec/support/inspector.rb and class_eval the models to override ‘inspect`.
Public Class Methods
Source
# File lib/gooddata/mixins/inspector.rb, line 38 def self.included(source) inspected << source source.class_eval do def self.inspector(*fields) @inspector_fields = *fields end def self.inspector_fields @inspector_fields ||= [] end end end
Source
# File lib/gooddata/mixins/inspector.rb, line 34 def self.inspected @inspected ||= [] end
Source
# File lib/gooddata/mixins/inspector.rb, line 41 def self.inspector(*fields) @inspector_fields = *fields end
Source
# File lib/gooddata/mixins/inspector.rb, line 45 def self.inspector_fields @inspector_fields ||= [] end
Public Instance Methods
Source
# File lib/gooddata/mixins/inspector.rb, line 28 def inspect string = "#<#{self.class.name}:#{object_id} " fields = self.class.inspector_fields.map { |field| "#{field}: #{send(field)}" } string << fields.join(', ') << '>' end