defined

Calls Module#defined after a class or module has been defined or redefined

Installation

gem install defined

Usage

class User
  def self.defined(file, line, method)
    puts "  defined by #{file}:#{line} with #{method}"
  end

  puts 'in original class definition'
end

User.class_eval do
  puts 'in class_eval'
end

class User
  puts 'in class definition again'
end

Class.new(User) do
  puts 'in Class.new'
end

Outputs

in original class definition
  defined by /tmp/untitled.rb:1 with class
in class_eval
  defined by /tmp/untitled.rb:9 with class_eval
in class definition again
  defined by /tmp/untitled.rb:13 with class
in Class.new
  defined by /tmp/untitled.rb:17 with initialize

Note the method in the last example is initialize NOT new

Patches and pull requests

  • Fork the project.

  • Make your feature addition or bug fix.

  • Add tests for it. This is important so I don’t break it in a future version unintentionally.

  • Commit, do not mess with Rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)

  • Send me a pull request. Bonus points for topic branches.