https://github.com/shuber/defined
Calls Module#defined after a ruby class or module is (re)defined
https://github.com/shuber/defined
Last synced: about 1 year ago
JSON representation
Calls Module#defined after a ruby class or module is (re)defined
- Host: GitHub
- URL: https://github.com/shuber/defined
- Owner: shuber
- License: mit
- Created: 2011-02-18T00:23:33.000Z (over 15 years ago)
- Default Branch: master
- Last Pushed: 2011-05-04T18:24:05.000Z (about 15 years ago)
- Last Synced: 2025-04-18T09:44:49.848Z (about 1 year ago)
- Language: Ruby
- Homepage:
- Size: 206 KB
- Stars: 15
- Watchers: 2
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.rdoc
- License: MIT-LICENSE
Awesome Lists containing this project
README
= 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.