dry-initializer

Readers

By default public attribute reader is defined for every param and option.

You can define private or protected reader instead:

require 'dry-initializer'

class User
  extend Dry::Initializer

  param :name,  reader: :private   # the same as adding `private :name`
  param :email, reader: :protected # the same as adding `protected :email`
end

To skip any reader, use reader: false:

require 'dry-initializer'

class User
  extend Dry::Initializer

  param :name
  param :email, reader: false
end

user = User.new 'Luke', 'luke@example.com'
user.name  # => 'Luke'

user.email                         # => #<NoMethodError ...>
user.instance_variable_get :@email # => 'luke@example.com'

Notice that any other value except for false, :protected and :private provides a public reader.

No writers are defined. Define them using pure ruby attr_writer when necessary.