Simple Ruby objects mixin, with configuration.
Add this line to your application's Gemfile:
gem 'mixes'
And then execute:
$ bundle
Or install it yourself as:
$ gem install mixes
Include your module inside any Ruby object using the mixes
syntax:
module FooModule
def instance_method
end
module ClassMethods
def class_method
end
end
end
class FooClass
mixes FooModule
end
FooModule
module level methods would become instance methods within host object, and FooModule::ClassMethods
methods would become class level methods.
You can pass a second argument to mixes
method, holding the per-extension configuration values for module beeing mixed in.
class FooClass
mixes FooModule, :foo
# OR
mixes FooModule, {foo: :bar}
# OR
mixes FooModule, [:foo, :bar]
# OR
# any other configuration values
end
This values would be available inside extended module throught the mixin_configuration
class level accessor:
module FooModule
def self.included(base)
# prepare module host object based on values held by mixin_configuration
end
end
class FooClass
mixes FooModule, :foo
end
- Fork it ( https://github.com/siemakuba/mixes/fork )
- 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 a new Pull Request