Calls Module#defined after a ruby class or module is (re)defined
Ruby
Latest commit 17dd71e May 4, 2011 @shuber bump version
Permalink
Failed to load latest commit information.
lib
test
.gitignore
MIT-LICENSE
README.rdoc
Rakefile
defined.gemspec update version module Apr 3, 2011

README.rdoc

defined

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

Note: relies on {Kernel#set_trace_func}[http://www.ruby-doc.org/core/classes/Kernel.html#M001430]

Installation

gem install defined

Usage

Defined.enable!

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.