Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/erniebrodeur/creatable
extension for ruby to mixin a create method and dynamic attributes to go with.
https://github.com/erniebrodeur/creatable
r
Last synced: 3 months ago
JSON representation
extension for ruby to mixin a create method and dynamic attributes to go with.
- Host: GitHub
- URL: https://github.com/erniebrodeur/creatable
- Owner: erniebrodeur
- License: mit
- Archived: true
- Created: 2018-07-23T19:09:03.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2021-04-29T19:10:38.000Z (over 3 years ago)
- Last Synced: 2024-09-17T12:54:21.749Z (3 months ago)
- Topics: r
- Language: Ruby
- Homepage: https://erniebrodeur.github.io/creatable/
- Size: 43 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# Creatable
[![CodeFactor](https://www.codefactor.io/repository/github/erniebrodeur/creatable/badge)](https://www.codefactor.io/repository/github/erniebrodeur/creatable)
A mixin that adds a `create` method to any class.
## Installation
Add this line to your application's Gemfile:
```ruby
gem 'creatable'
```And then execute:
bundle
Or install it yourself as:
gem install creatable
## Class Usage
``` ruby
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
``` ruby
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](https://rubygems.org).
## Contributing
Bug reports and pull requests are welcome on GitHub at [github.com](https://github.com/erniebrodeur/creatable).