Uninclude
Implement Module#uninclude and Object#unextend
Tested ruby versions
- 2.2.3
- 2.2.0
- 2.1.4
- 2.1.0
- 2.0.0
- 1.9.3
- 1.9.2
- 1.8.7
- REE
see travis-ci.org
Installation
Add this line to your application's Gemfile:
gem 'uninclude'
And then execute:
$ bundle
Or install it yourself as:
$ gem install uninclude
Usage
require 'uninclude'
module Bar
end
class Foo
include Bar
end
p Foo.ancestors # => [Foo, Bar, Object, Kernel, BasicObject]
Foo.class_eval { uninclude Bar }
p Foo.ancestors # => [Foo, Object, Kernel, BasicObject]
foo = Foo.new
foo.extend(Bar)
p foo.singleton_class.ancestors # => [Bar, Foo, Object, Kernel, BasicObject]
foo.unextend(Bar)
p foo.singleton_class.ancestors # => [Foo, Object, Kernel, BasicObject]
uninclude/block
Make #include
/ #uninclude
accepts blocks.
require 'uninclude/block' # This feature is optional. Please require 'uninclude/block' first.
Foo.include(Bar) do
p Foo.ancestors # => [Foo, Bar, Object, Kernel, BasicObject]
end
p Foo.ancestors # => [Foo, Object, Kernel, BasicObject]
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request