Include and then explicitly make all included methods private?
class A
include B
private *B.instance_methods
extend B
class << self
private *B.instance_methods
end
end
You can Moduleadd a monkey patch private_includeand private_extend:
class Module
def private_include *modules
class_eval do
self.send(:include, *modules)
modules.each do |mod|
self.send(:private, *mod.instance_methods)
end
end
end
def private_extend *modules
singleton = class << self; self end
singleton.instance_eval do
self.send(:include, *modules)
modules.each do |mod|
self.send(:private, *mod.instance_methods)
end
end
end
end
source
share