Sha256: b531d50d7f5f3116d53968032f778a394f22981f088183d1aae4516c41aed326

Contents?: true

Size: 907 Bytes

Versions: 19

Compression:

Stored size: 907 Bytes

Contents

class Class
  def publicize_methods
    klass = class << self; self; end

    saved_private_class_methods      = klass.private_instance_methods
    saved_protected_class_methods    = klass.protected_instance_methods
    saved_private_instance_methods   = self.private_instance_methods
    saved_protected_instance_methods = self.protected_instance_methods

    self.class_eval do
      klass.send(:public, *saved_private_class_methods)
      klass.send(:public, *saved_protected_class_methods)
      public(*saved_private_instance_methods)
      public(*saved_protected_instance_methods)
    end

    begin
      yield
    ensure
      self.class_eval do
        klass.send(:private, *saved_private_class_methods)
        klass.send(:protected, *saved_protected_class_methods)
        private(*saved_private_instance_methods)
        protected(*saved_protected_instance_methods)
      end
    end
  end
end

Version data entries

19 entries across 19 versions & 5 rubygems

Version Path
datamapper-dm-core-0.9.11 spec/lib/publicize_methods.rb
joevandyk-dm-core-0.9.6 spec/lib/publicize_methods.rb
rpbertp13-dm-core-0.9.11.1 spec/lib/publicize_methods.rb
rpbertp13-dm-core-0.9.11.2 spec/lib/publicize_methods.rb
sam-dm-core-0.9.10 spec/lib/publicize_methods.rb
sam-dm-core-0.9.11 spec/lib/publicize_methods.rb
sam-dm-core-0.9.6 spec/lib/publicize_methods.rb
sam-dm-core-0.9.7 spec/lib/publicize_methods.rb
sam-dm-core-0.9.8 spec/lib/publicize_methods.rb
sam-dm-core-0.9.9 spec/lib/publicize_methods.rb
dm-core-0.9.10 spec/lib/publicize_methods.rb
dm-core-0.9.11 spec/lib/publicize_methods.rb
dm-core-0.9.6 spec/lib/publicize_methods.rb
dm-core-0.9.3 spec/lib/publicize_methods.rb
dm-core-0.9.5 spec/lib/publicize_methods.rb
dm-core-0.9.7 spec/lib/publicize_methods.rb
dm-core-0.9.4 spec/lib/publicize_methods.rb
dm-core-0.9.9 spec/lib/publicize_methods.rb
dm-core-0.9.8 spec/lib/publicize_methods.rb