Attire
Mixins to remove some boiler plate in defining classes.
N.B. This is the README for version 2.0.0. Major changes have been made. For previous versions please consult the tagged commit.
Initializer
Attire::Initializer extends a subsequent initialize method so that all it's parameters are assigned to instance variables and they can all be reached from private getters. For example:
require 'attire'
class MyClass
extend Attire::Initializer
def initialize(foo:, bar: 24)
@bar = * 2
end
def result
foo +
end
end
my_instance = MyClass.new(foo: 50)
my_instance.result # 98
MethodObject
Attire::MethodObject does the same as Attire::Initializer but it also adds a singleton method that creates an instance and then calls an instance method. This is useful for objects that are designed to do one task. For example:
class CheeseSpreader
extend Attire::MethodObject.new(:spread)
def initialize(cheese, cracker: Jacobs.new)
end
def spread
cracker.spreads << cheese
cracker
end
end
CheeseSpreader.spread(:roquefort)
Installation
Add to Gemfile:
gem 'attire'
Inspirations
Contributing
- Fork it ( https://github.com/[my-github-username]/attire/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