On 14/03/17 13:45, Henne Vogelsang wrote:
https://semaphoreci.com/community/tutorials/how-to-reduce-controller-bloat-w...
https://mkdev.me/en/posts/a-couple-of-words-about-interactors-in-rails
https://github.com/collectiveidea/interactor
Well service objects tend to grow to have many responsibilities, while interactors are by definition limited to one responsibility. This means they are harder to extract but people do not end up "just" moving code around to make complexity metrics happy.
Henne
"while interactors are by definition limited to one responsibility" This is not true, there is nothing to stop you putting too many responsibilities in one interactor. Take a look at the code for the interactor class, its just a service object which uses an Openstruct for the arguments and includes a hooks module: https://github.com/collectiveidea/interactor/blob/master/lib/interactor.rb I think we are comparing apples and oranges here. The interactor gem uses service objects as a way of organising code but gives you a few extra things like context objects and hooks. So I think we have two questions now in the discussion: 1. Do we want to use service objects? 2. Do we want to use a gem to organise our service objects and potentially other kinds objects? My answer to #1 is of course yes. As for #2 I think thats also a yes but I would say there are several other gems that give you more structure to your rails app which we should consider. For example the rectify gem looks good to me as well, it includes 3 other design patterns too: https://github.com/andypike/rectify A third gem which offers a structure to organise code is TrailBlazer. Its quite a bit more radical in its approach than interactor and rectify though.. https://github.com/trailblazer/trailblazer Though maybe question #2 should be done in a seperate discussion? Keep in mind that the service object I coded can be easily turned into an interactor object or and rectify command object should we choose to use one of those gems. I've never used any of these gems myself though, does anybody have any experience using something like this? -- Evan Rolfe Full Stack Web Developer SUSE Linux GmbH, Maxfeldstr. 5, D-90409 Nürnberg Tel: +49-911-74053-0; Fax: +49-911-7417755; https://www.suse.com/ SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nürnberg) -- To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-buildservice+owner@opensuse.org