Class: Class

Inherits:
Object show all
Defined in:
lib/sixarm_ruby_ramp/class.rb

Instance Method Summary collapse

Instance Method Details

#publicize_methodsObject

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

Examples:

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

Returns:

  • void



22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/sixarm_ruby_ramp/class.rb', line 22

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