class Class

Class extensions

Public Instance Methods

publicize_methods() { || ... } click to toggle source

Make all the methods public for a block.

This is especially useful for unit testing a class's private and protected methods

From blog.jayfields.com/2007/11/ruby-testing-private-methods.html

@example

MyClass.publicize_methods do
  ...call some method that was private or protected...
end

@return void

# File lib/sixarm_ruby_ramp/class.rb, line 21
def publicize_methods
  saved_private_instance_methods = self.private_instance_methods
  saved_protected_instance_methods = self.protected_instance_methods
  self.class_eval {
    public(*saved_private_instance_methods)
    public(*saved_protected_instance_methods)
  }
  yield
  self.class_eval {
    private(*saved_private_instance_methods)
    protected(*saved_protected_instance_methods)
  }
end