Project

creatable

0.0
Repository is archived
No commit activity in last 3 years
No release in over 3 years
Mixin adds create, and attribute methods. Use these instead of attr_ and the #create method is automatically generated.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies
 Project Readme

Creatable

CodeFactor

A mixin that adds a create method to any class.

Installation

Add this line to your application's Gemfile:

gem 'creatable'

And then execute:

bundle

Or install it yourself as:

gem install creatable

Class Usage

class A
    # include the class
    include Creatable

    # add an attribute (will default to accessor)
    attribute name: 'an_attribute'

    # add the reader method only
    attribute name: 'an_attribute', type: 'reader'

    # add the writer method only
    attribute name: 'an_attribute', type: 'writer'

    # Restrict the type you can assign to this attribute
    attribute name: 'an_attribute', type: 'accessor', kind_of: String

    # You can assign multiple types
    attribute name: 'an_attribute', type: 'accessor', kind_of: [String, Array, nil]
end

Instance Usage

    i = A.create an_attribute: 'this'

    # pass a block to create for it to be processed during initialize
    # note that you have to accept an argument in the block to get the object
    # you want to change.
    i = A.create(an_attribute: 'this') { |obj| obj.an_attribute = 'that' }

    # a hash of the current attributes.
    i.attributes

    # an array of the names
    i.attribute_names

    # The current values of all attributes as a hash
    i.to_parameters

    # creating a new object from parameters
    A.create i.to_parameters

Usage notes

  • key can be in several formats: 'key', :key, and ':key' will all be accepted.
  • if you supply a block of code, it will be executed right before .create returns.

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at github.com.