Been summarizing some of my studies – note none of this is confirmed by an official Ruby on Rails historian …
I started out looking for where code was supposed to be placed. Why? Because I read about DRY. I really liked the idea of not wasting time redoing code – it’s one of the reason I got into Rails, which I will call RoR from here forward.
So people divide the RoR apps up according to MVC philosophy, which the short version is the model of the database logic, the view you see & is’ logic, and the controller with its logic to tie the two together.
In this MVC design, when I entered RoR’s world most posters were talking about Fat Model / Skinny Controller.
I started reading a lot about this stuff … Justin Weiss has a great breakdown summary of different patterns & where they get placed in the RoR app – Link. I also like the description of the process on Stackoverflow from ‘Jason‘ & Mike Woodhouse – Link.
From what I can gather from posts there was a development of programming as people moved along. Notice I’m not numbering these…there’s a reason…
- model / controller / views
- helpers (with special visibility to only their views)
- custom classes anywhere
- app/lib as “the spot” which at one point in RoR history auto loaded (not anymore)
- modules / mix-ins to include the classes/methods
- gems – which
- plugins – which were discontinued in Rails 4, but the command used to make engines now – Hawkins had a good break down if somewhat biased – Link
- concerns – which even had a special
activesupport::concernsfor including classes added
- rails engines which improve on the modules>gems by encapsulating the database too … often these are wrapped in gems when created with mountable option – this might be part of the micro-services movement…