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.