Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
Tim Riley
@timriley
Just so it's not so strict about missing values when initializing
and #[] in place so I can use it with a ROM::Model::Validator
Tim Riley
@timriley
Him, except I can't use a Dry::Data::Struct as an input for a ROM command
Tim Riley
@timriley
I handled it this way in the interim:
App.register "transformations.to_h" do |input|
  input.to_h
end

App.register("transactions.sign_up_customer") do
  CallSheet(container: App) do
    map :process, with: "attributes.customer_sign_up"
    try :validate, with: "validators.customer", catch: ROM::Model::ValidationError
    map :prepare_for_persist, with: "transformations.to_h"
    tee :persist, with: "persistence.commands.create_customer"
  end
end
Added a #to_h to that FormAttributes class and that prepare_for_persiststep in the business transaction.
Does not feel ideal, but it works for now at least ¯_(ツ)_/¯
Piotr Solnica
@solnic
@timriley I haven’t finish dry-data wrt web form handling
first cut of this lib is targeting defining domain data types, as the second step I was planning to work on form-specific logic (with custom builtin types/coercions dedicated for this concern)
Tim Riley
@timriley
@solnic yeah, I did see you mention something like this! I figured if we could get it going well enough as-is, then it'll be a nice transition later on to the built-in form handling stuff :)
Piotr Solnica
@solnic
@timriley I’ll be updating it very soon, just need to get the rodakase basic stuff up and running
Tim Riley
@timriley
No problems. I'll happily roadtest the thing for you.
Piotr Solnica
@solnic
@AMHOL would be nice to put together a roadmap for dry-* gems so that we can see the big picture and hopefuly get more people contributing; from my pov validation + data are currently number 1 prio, but there are also some things that we could improve in dry-container and auto_inject (actualy thinking about renaming it to dry-import)
ugh, sorry, I meant that number 1 prio is GETTING A LOGO FOR THE ORG :joy:
Andy Holland
@AMHOL
Lol, yeah, need to organise it more like ROM I guess
Piotr Solnica
@solnic
(byebug) view_class.config
#<struct engine=:slim, layout="app", template="users">
(byebug) Class.new(view_class).config
#<struct engine=nil, layout=nil, template=nil>
@AMHOL is this expected?
Andy Holland
@AMHOL
Hmm, nah, looks like a bug
Piotr Solnica
@solnic
@AMHOL it works with setting :foo, ‘bar’
this one will be inherited
but the configured settings won't
Andy Holland
@AMHOL
Ahh ok, i'll have a look tomorrow if thats ok?
Piotr Solnica
@solnic
no rush at all
Andy Holland
@AMHOL
Cool, going to meet friends for drinks soon
Andy Holland
@AMHOL
@solnic dryrb/dry-configurable@992d16a
Andy Holland
@AMHOL
@solnic dryrb/dry-container@7f905a6
Saw you mentioned that in a comment in Rodakase too
François Bernier
@fbernier
Hey, there is this API client at my workplace which uses Hashie::Mash and I don't like it. I am checking out dry-data. Looks like it could replace it right?
Piotr Solnica
@solnic
@fbernier kinda :) dry-data’s structs require you to define attributes
François Bernier
@fbernier
yeah that's mostly the part I want to replace.
Looks neat so I'll give it a try!
Piotr Solnica
@solnic
ok, that’s cool :) remember it’s very alpha though
I have big plans for this lib, but for now I’m busy with other stuff
fwiw it’s been very useful for me already, but there are some rough edges
François Bernier
@fbernier
yeah that's fine. I'll try helping if I hit any unmet needs or issues.
Piotr Solnica
@solnic
that’s awesome :)
François Bernier
@fbernier
Not possible to set a default value to an attribute right?
Piotr Solnica
@solnic
nope, it’s not this kind of a library
François Bernier
@fbernier
alright
so if I have those kind of needs, should I be looking into virtus instead ?
Piotr Solnica
@solnic
@AMHOL wdyt about a feature in dry-container to memoize resolved object?
container.register(‘foo’, singleton: true) { Foo.new }
would that be too much?
I think it’s gonna be a common pattern that you only want to have one instance
Andy Holland
@AMHOL
@solnic just do container.register('foo', Foo.new)
Piotr Solnica
@solnic
I can’t in some places
becauase Foo.new may need Bar.new
Andy Holland
@AMHOL
If Foo#call is implemented, you'll need container.register('foo', Foo.new, call: false)
Fair point
Yep, I think we could add that interface
Piotr Solnica
@solnic
that would be awesome