module ObjectInfo

CORE

Constants

VERSION

Public Class Methods

analyze(_object_, all_methods =false) click to toggle source

TODO add dependency to colorize and use it„

# File lib/object_info.rb, line 21
def self.analyze (_object_, all_methods =false)

  options_val = _object_.is_a?(ActiveRecord::Base) ? {} : {raw: true}

  puts "Class: ".red + _object_.class.name.yellow rescue ''
  puts "Class_methods: ".red
  if all_methods
    ap((_object_.class.methods), options = options_val) rescue puts 'not retrieved'
  else
    ap((_object_.class.methods - Object.methods - ActiveRecord::Base.methods), options = options_val) rescue puts 'not retrieved'
  end

  puts "Associations: ".red
  puts "--> has_many: ".blue
  hm_ =(_object_.class.name.constantize.reflect_on_all_associations(:has_many).each { |association| puts "      relation name: " + "#{association.name}".yellow}) rescue nil
  puts '        nothing' unless hm_.present?
  puts "---> belongs_to: ".blue
  bt_ = (_object_.class.name.constantize.reflect_on_all_associations(:belongs_to).each { |association| puts "      relation name: " + "#{association.name}".yellow}) rescue nil
  puts '        nothing' unless bt_.present?

  puts "Instance methods:".red
  ap((eval "#{_object_.class.instance_methods(false)}"), options = options_val) rescue 'not retrieved'

  puts "Callbacks:".red

  callback_types = ['save', 'initialize', 'find', 'touch', 'validation', 'create', 'update', 'destroy', 'commit', 'rollback']

  callback_types.each do |_type_|
    eval("_object_.class.name.constantize._#{_type_}_callbacks").each do |save_callback|
      puts ("        #{save_callback.kind.to_s} #{save_callback.name.to_s}".blue + " >>> " +"#{save_callback.filter.to_s}".yellow)
    end rescue ''
  end


 # _create_callbacks

  puts 'Payload:'.red
  ap  _object_ , options = options_val rescue 'not retrieved'
end