Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
Piotr Solnica
@solnic
@/all hey folks! dry-validation 0.10.0 dry-types 0.9.0 and the new dry-struct 0.1.0 gems have been just released. Please do read CHANGELOGs on GitHub before upgrading :) More info coming soon on our blog!
Tim Riley
@timriley
woooo solnic nice woooooorrrkkkk :tada:
Joe Van Dyk
@joevandyk
how can I validate in dry-validation that a hash has string keys and string values?
Tim Riley
@timriley
I guess you’d need to use the input macro for that
Joe Van Dyk
@joevandyk
/home/monkey/.gem/ruby/2.2.5/gems/dry-validation-0.10.0/lib/dry/validation/schema/value.rb:1:in `require': cannot load such file -- dry/struct (LoadError)
    from /home/monkey/.gem/ruby/2.2.5/gems/dry-validation-0.10.0/lib/dry/validation/schema/value.rb:1:in `<top (required)>'
    from /home/monkey/.gem/ruby/2.2.5/gems/dry-validation-0.10.0/lib/dry/validation/schema.rb:7:in `require'
    from /home/monkey/.gem/ruby/2.2.5/gems/dry-validation-0.10.0/lib/dry/validation/schema.rb:7:in `<top (required)>'
is that expected?
Nikita Shilnikov
@flash-gordon
oops
Joe Van Dyk
@joevandyk
this is when requiring dry-v
Nikita Shilnikov
@flash-gordon
@solnic I pushed a fix ^
just removed that line, I overlooked it, sorry
Joe Van Dyk
@joevandyk
@timriley what's the input macro?
Jānis Miezītis
@janjiss
Folks, I just wanted to say: You are awesome
Nikita Shilnikov
@flash-gordon
:heart:
Piotr Solnica
@solnic
@janjiss <3
@flash-gordon it’d be fine to push 0.10.1 with your fix, I think, wdyt?
@timriley thanks, wasn’t easy, thankfully we’ve got amazing help from contributors :)
now I gotta sum this up in a blog post :sweat_smile:
Nikita Shilnikov
@flash-gordon
@solnic yeah, think so
John Backus
@backus
Good news
I think I found my first dry-v bug of the new release
gem 'dry-validation', '~> 0.10'

require 'dry/validation'

schema =
  Dry::Validation.Schema do
    required(:foo) { str? }
    required(:bar) { str? | int? }
  end

schema.call(foo: 1, bar: 'blah').message_set.first.text # => "must be a string"

begin
  schema.call(foo: 'hi', bar: 1.0).message_set.first.text
rescue => err
  p err
end

# >> #<NoMethodError: undefined method `text' for #<Dry::Validation::Message::Or:0x007fbcb32514b8>>
@solnic or @flash-gordon ^
Is it a bug or were we using private API?
John Backus
@backus
works with #to_s
gem 'dry-validation', '~> 0.10'

require 'dry/validation'

SCHEMA =
  Dry::Validation.Schema do
    required(:foo) { str? }
    required(:bar, %i[string int]) { str? | int? }
  end

SCHEMA.call(foo: 1, bar: 'blah').message_set.first.to_s # => "must be a string"

begin
  SCHEMA.call(foo: 'hi', bar: 1.0).message_set.first.to_s # => "must be a string or must be an integer"
rescue => err
  p err
end
Piotr Solnica
@solnic
@backus #to_s should be used, not text
there’s also Result#errors and Result#hints
John Backus
@backus
cool
thanks
Joe Van Dyk
@joevandyk
I have a form schema called X. How can I validate that an array is filled with X?
http://dry-rb.org/gems/dry-validation/reusing-schemas/ deals with a hash with a key that has a schema of X
Joe Van Dyk
@joevandyk
I tired each { schema X } but got an error
oh hm.. that works with plain schemas, not form schemas
on dry-v master
if I use a form schema, I get:
/home/monkey/.gem/ruby/2.2.5/gems/dry-types-0.9.0/lib/dry/types/compiler.rb:80:in `merge': no implicit conversion of Dry::Types::Safe into Hash (TypeError)
    from /home/monkey/.gem/ruby/2.2.5/gems/dry-types-0.9.0/lib/dry/types/compiler.rb:80:in `each'
that a bug?
Kiril Dokh
@dsounded
@flash-gordon I just though it cause Scala has getOrElse for Try as well, sure, in general you should work around exceptions somehow, but in some cases it could be helpful
Kiril Dokh
@dsounded
@solnic, Am I able to pass a variable to validate error message somehos ?
Kiril Dokh
@dsounded
@flash-gordon WDYT if it would be possible to perform pattern-mathing gem on top of dry-monads and dry-equalizer ?
Kiril Dokh
@dsounded
will check this out
Nikita Shilnikov
@flash-gordon
@dsounded re getOrElse, well, we can add it, though I'd add a disclaimer about its usage in Try and Either :)
re pattern matching, you can use case for simple ugh ... cases
Kiril Dokh
@dsounded
Sure, but currently that gem oriented only for Either like behavior
Nikita Shilnikov
@flash-gordon
in dry-matcher you can write a matcher for an arbitrary type http://dry-rb.org/gems/dry-matcher/
Christopher Dennl-Ortega Arrieta
@cdennl
what exactly is the difference now between hints and errors?
Piotr Solnica
@solnic
@cdennl hints are not errors, they are messages generated from your rule definitions, you can treat them separately to show useful feedback in UI so that the user will know about requirements for a given field
until 0.10 we only have messages that merge both errors and hints, this turned out to be problematic in some cases so it was separated in 0.10.0
Joe Van Dyk
@joevandyk
@solnic should i submit a bug about not being able to reuse form schemas?