Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • 10:56

    davydovanton on performance-improvements-for-rack-monitorring

    (compare)

  • 10:55

    davydovanton on master

    Improve memory allocation for R… Merge pull request #34 from dry… (compare)

  • 10:55
    davydovanton closed #34
  • 02:25
    DaiAoki starred dry-rb/dry-types
  • Apr 01 14:39
    davydovanton commented #34
  • Apr 01 14:24
    dry-bot commented #34
  • Apr 01 14:19
    davydovanton synchronize #34
  • Apr 01 14:19

    davydovanton on performance-improvements-for-rack-monitorring

    Improve memory allocation for R… (compare)

  • Apr 01 14:17

    davydovanton on runtime-deps

    (compare)

  • Apr 01 14:17

    davydovanton on master

    Fix dry-events dependency in th… Merge pull request #36 from dry… (compare)

  • Apr 01 14:17
    davydovanton closed #36
  • Apr 01 14:15
    davydovanton opened #36
  • Apr 01 14:15

    davydovanton on runtime-deps

    Fix dry-events dependency in th… (compare)

  • Apr 01 10:59
    solnic commented #35
  • Apr 01 10:50
    flash-gordon commented #35
  • Apr 01 10:43
    davydovanton synchronize #34
  • Apr 01 10:43

    davydovanton on performance-improvements-for-rack-monitorring

    Improve memory allocation for R… (compare)

  • Apr 01 10:27

    dry-bot on master

    [devtools] sync (compare)

  • Apr 01 10:27

    solnic on broken-master

    (compare)

  • Apr 01 10:27

    solnic on master

    Fix dry-event version in runtim… Merge pull request #35 from dry… (compare)

George Millo
@georgemillo
third mystery: how did I manage to misspell 'routes' above, when I have to deal with that word all day every day as a web developer?
I don't know how to English
Andy Holland
@AMHOL
:laughing: I didn't notice ;)
I haerd taht if you jmulbe up the ltetres in the mdidle of echa wrod in a snetnece poelpe can sitll raed it
MarkT
@paradisaeidae
thanks @cdennl ! Reading it now. I kinda like the reading so far!
Adam Davies
@adz

I’m a bit confused with Dry Struct….

It used to be in drytypes: Dry::Types::Struct now its on its own so change to Dry::Struct, right?

What stupid thing am I doing here:

class CreateClientForm < Dry::Struct
  module Types
    include Dry::Types.module
  end

  attribute :name, Types::Form::String
end

which appears to not find “String” constant…

specs in dry struct do:

attribute :name, ‘coercible.string’
is this how I should change things?

Maybe this should be Types::Coercible::String ??
that seems to work… hmmm

I just assumed all ‘form’ values here so use that, but perhaps I should read more closely descriptions of each….

Adam Davies
@adz

…in
http://dry-rb.org/gems/dry-validation/comparison-with-activemodel/
trying to understand

    option :account
    def unique?(attr_name, value)

and how it’s params line up with

schema.with(object: user_account).call(input)

1) is that ‘object’ key special? I thought it would be ‘account’
2) i guess that the ‘unique?’ method gets curried, so ‘value’ comes in…
but a little down”
required(:email).filled(scoped_unique?: :email, scope?: { active: true })
seems to pass in as a key “scope?:” but receive it as a positional arg… ok i guess… if i have it straight

Adam Davies
@adz

Just to report back… seems like that doc is wrong. Probably was specialised for ‘account’ then generalised to ‘object’ but not fully.

I think it should be something like:

      option :record

      def unique?(attr_name, value)
        record.class
        .where.not(id: record.id)
        .where(attr_name => value)
        .empty?
      end
Adam Davies
@adz
Here’s a PR to correct ^ dry-rb/dry-rb.org#138
Tim Riley
@timriley
@adz we don’t have form types for strings in dry-types since forms will always submit strings anyway. No need for coercion. You could always just use Types::Strict::String in such a case.
@adz Also, the typical setup (so far at least) for handling form submissions is to run the form params through a dry-validation schema first anyway, which’ll handle any form coercions and give you properly structured and typed Ruby values out the other end. This means that you can then avoid having to use form types in your structs.
Adam Davies
@adz
Yeah I see. Actually did that with dry and ROM project. Was following this write-up to get started in a Rails app
It uses dry struct for form object with dry validation for save call
Tim Riley
@timriley
oh that’s interesting
George Millo
@georgemillo
is there a way to use a dry struct as a type in another dry struct?
Tim Riley
@timriley
@georgemillo yep!
module Types
  include Dry::Types.module
end

class Address < Dry::Struct
  attribute :suburb, Types::Strict::String
end

class Customer < Dry::Struct
  attribute :name, Types::Strict::String
  attribute :address, Address
end

Customer.new(name: "George", address: {suburb: "Test Town”})
# => #<Customer name="George" address=#<Address suburb="Test Town">>
Rafael
@lastk
Tim Riley
@timriley
@lastk I think you might be asking in the wrong room. I think you’re after trailblazer/chat
Rafael
@lastk
ops
yes, you're right, sorry :P
Adam Davies
@adz

Following on from experimenting with dry-validations…
How would you verify uniqueness when scoped to another record?

Say “account” has many “users”, and I want users.name to be unqiue within an account….

Tim Riley
@timriley
@adz I’d write a predicate like unique_within_account?(account_id, user_name)
Adam Davies
@adz
Thanks… how would that look when called? I’m a little confused about that
Tim Riley
@timriley
lemme set something up to test :)
Adam Davies
@adz
Much appreciated !
(there’s more if click through)
Adam Davies
@adz
got it...
how would it look if “unique_within_account?” had a third param?
name.unique_within_account?(account_id)
-> ?
Tim Riley
@timriley
the “value under test” is always the last param for custom predicates
so it’d be def unique_within?(first, second, the_value)
and fo name.unique_within?(“foo”, “bar”), first would be ”foo”, second would be ”bar”
is that what you’re after?
Adam Davies
@adz
ah ok… yeah
trying different things and I think there are issues with docs
Tim Riley
@timriley
Sorry about that :grimacing:
Adam Davies
@adz
it shows like
required(:email).filled(scoped_unique?: :email, scope?: { active: true })
… i guess . does it change when under the ‘filled’?
defined inside configure:
def scoped_unique?(attr_name, scope, value)
Tim Riley
@timriley
well, it’s just a different way of running that predicate
.filled(prdicate_name?: :args_go_here)
Adam Davies
@adz
i understand it changes to “filled? & …"
Tim Riley
@timriley
lemme try
I don’t think you can do that short-hand use of the predicates if you’re depending on another input value
the high-level rules work because they only run if the input values they require have passed any other validations