Sha256: c2fba022f2ebb17aba04c860e7e9d29575e038e6b191a38a895bb6fb6ed4532a
Contents?: true
Size: 877 Bytes
Versions: 3
Compression:
Stored size: 877 Bytes
Contents
# frozen_string_literal: true # There's also nothing stopping you from doing this in # any ruby class # class User # # ... # include Inspector # inspector :id, :email, :company_id # #... # end # puts User.new.inspect # => #<User:0x10c7a2f80 id: 1, email: "tyler@example.com", company_id: 1> module Inspector def inspect string = "#<#{self.class.name}:#{object_id} " fields = self.class.inspector_fields.map do |field| "#{field}: #{send(field)}" end "#{string}#{fields.join(', ')}>" end def self.inspected @inspected ||= [] end def self.included(source) # $stdout.puts "Overriding inspect on #{source}" inspected << source source.class_eval do def self.inspector(*fields) @inspector_fields = *fields end def self.inspector_fields @inspector_fields ||= [] end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
bario-0.1.2 | lib/bario/inspector.rb |
bario-0.1.1 | lib/bario/inspector.rb |
bario-0.1.0 | lib/bario/inspector.rb |