Skip to content

jmgarnier/dry-initializer

 
 

Repository files navigation

dry-initializer Join the chat at https://gitter.im/dry-rb/chat

Gem Version Build Status Dependency Status Code Climate Test Coverage Inline docs

DSL for building class initializer with params and options.

Installation

Add this line to your application's Gemfile:

gem 'dry-initializer'

And then execute:

$ bundle

Or install it yourself as:

$ gem install dry-initializer

Synopsis

require 'dry-initializer'

class User
  extend Dry::Initializer::Mixin

  # Params of the initializer along with corresponding readers
  param  :name
  param  :role,  default: proc { 'customer' }
  # Options of the initializer along with corresponding readers
  option :admin, default: proc { false }
end

# Defines the initializer with params and options
user = User.new 'Vladimir', 'admin', admin: true

# Defines readers for single attributes
user.name  # => 'Vladimir'
user.role  # => 'admin'
user.admin # => true

See full documentation on the Dry project official site

Benchmarks

The dry-initializer is pretty fast for rubies 2.2+ comparing to other libraries.

Compatibility

Tested under rubies compatible to MRI 2.2+.

Contributing

  • Fork the project
  • Create your feature branch (git checkout -b my-new-feature)
  • Add tests for it
  • Commit your changes (git commit -am '[UPDATE] Add some feature')
  • Push to the branch (git push origin my-new-feature)
  • Create a new Pull Request

License

The gem is available as open source under the terms of the MIT License.

About

DSL for building class initializer with params and options.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 100.0%