Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Calls Module#defined after a ruby class or module is (re)defined
Ruby
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib bump version
test don't set the trace function until Defined.enable! is called - closes #2
.gitignore update .gitignore
MIT-LICENSE initial commit
README.rdoc don't set the trace function until Defined.enable! is called - closes #2
Rakefile
defined.gemspec update version module

README.rdoc

defined

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

Note: relies on Kernel#set_trace_func

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.

Something went wrong with that request. Please try again.