Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • 15:43
    FioFiyo starred dry-rb/dry-types
  • 11:52
    flash-gordon commented #361
  • 07:09
    unixc3t starred dry-rb/dry-types
  • Oct 22 22:33
    patrickclery commented #361
  • Oct 22 21:12
    D1mon starred dry-rb/dry-matcher
  • Oct 22 15:44
    graudeejs starred dry-rb/dry-container
  • Oct 22 08:41
    esparta commented #366
  • Oct 22 08:39
    flash-gordon commented #366
  • Oct 22 08:39

    flash-gordon on master

    Fix error on Dry::Types::Array#… Merge pull request #366 from es… (compare)

  • Oct 22 08:39
    flash-gordon closed #366
  • Oct 22 08:38
    flash-gordon closed #362
  • Oct 22 08:38
    flash-gordon commented #362
  • Oct 22 08:37
    flash-gordon closed #361
  • Oct 22 08:37
    flash-gordon commented #361
  • Oct 22 07:48

    solnic on master

    Adding missing built-in predica… Merge pull request #65 from esp… Merge branch 'release-1.0' (compare)

  • Oct 22 07:47

    solnic on release-1.0

    Adding missing built-in predica… Merge pull request #65 from esp… (compare)

  • Oct 22 07:47
    solnic closed #65
  • Oct 22 07:29
    esparta opened #65
  • Oct 22 07:06
  • Oct 22 06:23
    robturtle starred dry-rb/dry-monads
Vasily Kolesnikov
@v-kolesnikov
I have already tried. It works.
Eliav Lavi
@eliav-lavi
Indeed, works
Thank you so much!
So the issue is with dry-web then... should this be raised on the discussion forum?
Vasily Kolesnikov
@v-kolesnikov
I really like dry-w concept, but I use it not in a direct way. I have some projects (open and private as well) which built on top of dry-web-roda and at the end, in my latest project I don't use dry-web-roda as a dependency, instead I use its template. I have system and lib dirs, use dry-system to manage components, use roda as a router and so on. But just without dry-w as a dependency. I doesn't mean I have something against dry-w, just share my experience.
@eliav-lavi Seems like you should use the following: config.default_context = Container["view.context"]
In dry-view 0.5.x
Vasily Kolesnikov
@v-kolesnikov
Eliav Lavi
@eliav-lavi
@v-kolesnikov changing context to default_context is something I already tried after sniffing around a bit in debug mode and just trying things out, but it leads to another error:
NoMethodError: undefined method `for_rendering' for #<DwrTest::Main::View::Context:0x00007fd53fc59f38>
    /Users/eliavlavi/.rvm/gems/ruby-2.5.3/gems/dry-view-0.5.4/lib/dry/view/rendering.rb:23:in `initialize'
    /Users/eliavlavi/.rvm/gems/ruby-2.5.3/gems/dry-view-0.5.4/lib/dry/view/rendering.rb:7:in `new'
    /Users/eliavlavi/.rvm/gems/ruby-2.5.3/gems/dry-view-0.5.4/lib/dry/view/rendering.rb:7:in `prepare'
    ...
127.0.0.1 - - [18/Jan/2019:10:47:25 +0200] "GET / HTTP/1.1" 500 151990 0.0265
Tim Riley
@timriley
Are you using dry-view master? All of this stuff isn’t released yet.
Nor is it documented yet.
Context classes now need to inherit from Dry::View::Context
Eliav Lavi
@eliav-lavi
@timriley I guess so? I ran gem install dry-web-roda, then dry-web-roda new dwr_test, then cd dwr_test and then bundle install. What currently works for me is forcing dry-view to be below 5.x, in the gemfile: gem "dry-view", "~> 0.4", "< 0.5"
the "< 0.5" is my addition, without it it didn't work
Tim Riley
@timriley
Ack, it seems like a bunch of stuff made it into 0.5.4 that shouldn’t be there
I’m going to yank it now
Yanked.
0.5.3 should work for you.
Sorry about that, @eliav-lavi
You’ll want to gem uninstall dry-view -v 0.5.4 and then re-bundle
Eliav Lavi
@eliav-lavi
No worries @timriley! I I guess that's not very trivial to coordinate seamless compatibility like that :) Really appreciate the work done here.
Piotr Solnica
@solnic
it's a bigger challenge when gems are in beta, after things settle it becomes much simpler
Piotr Solnica
@solnic
@v-kolesnikov re ditching dry-web-roda, it doesn't surprise me because this gem is really just a tiny integration between dry-system and roda, it can help people get up and running quickly but there's very little it actually provides (which is a wonderful thing, btw). given that we're now focusing more on hanami 2.0/3.0 effort, it's possible we'll discontinue dry-web* gems unless somebody would like to take over them
Eliav Lavi
@eliav-lavi
@solnic If I may intervene, one of my main problems with Hanami is that it creates an instance of an action per request. FooAction.new.call(args) - even if I can override the initialize method, as they describe, this is not how I want to do it, I want to have a single instance of those classes and just pass data through them.
What's your view of that aspect, if I may?
Jeff Dickey
@jdickey
@solnic :+1: That makes sense to me too. I remember poking at dry-web-roda when it was first published, and then going back to my own Rube Goldberg integration because I understood that and didn't see where d-w-r was trying to go, going forward. Tying up Dry + Hanami + ROM in the way that's been described over the last few months makes much more sense to me and my team, and we're excited to see where that goes
Tim Riley
@timriley
@eliav-lavi I’m not 100% sure how hanami actions work in 1.x, but in 2.0, whenever it comes out, what you describe will be possible
I think 1.x actions mutate their state, so it would make sense to get a new object each time
Eliav Lavi
@eliav-lavi
@timriley That's very good news!
Jeff Dickey
@jdickey
@eliav-lavi You're talking something more like Rails' Active Controller, where each action is a method on a class?
Eliav Lavi
@eliav-lavi
@jdickey not really, I just think the action class should have a single instance, created upon system boot. It should be immutable obviously. I actually do like the idea of one action per class, the Rails way is not my cup of tea here.
Piotr Solnica
@solnic
I can't say for sure but I remember Luca talking about actions becoming singletons that are "called" at runtime with input and they expect to return output (response object is being passed through and this one is mutable)
Jeff Dickey
@jdickey
The thing that initially sold us on Hanami, more than any other feature, was that each controller action is a separate class. Want shared behaviour? Extract it to a module that's included in each action. Explicit is more easily understood than implicit, and that's the basis for Clean Architecture to begin with. Minimise the number of places I have to look to understand what's going on in an individual piece of code
Eliav Lavi
@eliav-lavi
@jdickey no argue about that, completely valid. I like Hanami a lot.
Jeff Dickey
@jdickey

Minimise the number of places I have to look to understand what's going on in an individual piece of code.

...without burying me in a five-hundred-line piece of code with a score or three private methods, like too many Rails controllers I've had to do chainsaw surgery on over the years

Fine, then :)
Eliav Lavi
@eliav-lavi
@solnic it makes sense in general. I think the tendency to create what they call "service objects", that you instantiate and use at the same place, are a Ruby thing that actually creates a lot of troubles. This is the root of hard coded dependencies in many ways...
Piotr Solnica
@solnic
speaking about hanami actions, personally I would like to experiment in the future with a single-controller file with multiple actions as methods, that are "compiled" into standard classes behind the scenes, just for initial convenience. this approach works well in rom-rb and I think it's worth exploring
@eliav-lavi are you talking about FooService.new.do_stuff(params)?
Eliav Lavi
@eliav-lavi
Exactly.
Piotr Solnica
@solnic
IMO this is an anti-pattern, so I agree with you
getting rid of manual object creation in apps based on dry-system worked 1000x better than anything I tried before
Eliav Lavi
@eliav-lavi
And I believe this is SO widespread partially because of RSpec's allow_any_instance_of, which gives you the ability to unit test nevertheless. In Scala, for example, this is simply not possible... you just can't do that, so people don't.
@solnic did you manage to incorporate dry-system into an Hanami app and be pleased with it, if you have tried that?
Piotr Solnica
@solnic
@eliav-lavi I've only played with this idea and got it working, but I haven't built any production app with hanami/dry-system stack. IIRC Anton from hanami core uses hanami + dry-system in real apps.
re rspec, I so agree with you, I would say more - RSpec's crazy mocking capabilities has done more harm than good. I really wish RSpec's core team decided to trim that API to the very minimum.
(oh and I should mention I am a huge RSpec fan)
Eliav Lavi
@eliav-lavi
@solnic Would be interesting to see how he approaches that problem... Right now this kinda blocks me from adopting Hanami to my next project. Which leaves me kinda lost I guess - I feel like my best shot now is to assemble everything on my own, Roda\Sinatra for routing + ROM (I build an API, all jsons, no need for views at all)
Piotr Solnica
@solnic
@eliav-lavi if you build your app using dry-system with whatever else that you prefer and keep strong separation between the routing/http layer and your app layer, then I'm pretty damn sure porting it to hanami 2.0 will be easy
swapping routing front-ends in this architecture really is easy
Eliav Lavi
@eliav-lavi
@solnic yes, I am also a huge RSpec fan but indeed they, as many others, have taken the fact that Ruby is an interpretable, not complied, language, to a bad place. The thing is, it works OK for small CRUD apps but when you have bigger stuff with lots of logic, it's just one big procedural mess :(