Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
Eliav Lavi
@eliav-lavi
😩 I just noticed that!
it's weird, I barely touched the Gemfile, just added ruby '2.5.3' and gem "shotgun"...
Vasily Kolesnikov
@v-kolesnikov
and?
Eliav Lavi
@eliav-lavi
will be on gh in a minute or two :clock1:
Eliav Lavi
@eliav-lavi
Sorry, some authentication issue with github... on it, will let you know once its there. Thank you again
Eliav Lavi
@eliav-lavi
OK, there it is https://github.com/eliav-lavi/dwr_test @v-kolesnikov
Vasily Kolesnikov
@v-kolesnikov
:eyes:
Eliav Lavi
@eliav-lavi
Appreciated
Vasily Kolesnikov
@v-kolesnikov
The reason is some breaking changes in dry-view between 0.4.x and 0.5.x versions. I just see that dry-w was tested with dry-view 0.4.x only.
Eliav Lavi
@eliav-lavi
Oh. I assumed something like that. I'll try downgrading in the gemfile
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