ruby-on-railsmodel-view-controllerhmvc

Hierarchic MVC in Rails 3?


I've read about HMVC (Hierarchic Model View Controller) and it's flexible structure.

Have a look at this picture:

http://techportal.inviqa.com/wp-content/uploads/2010/02/MVC-HMVC.png

I wonder if the Rails 3 plugins are the answer to HMVC in Rails 3?


Solution

  • Based on the comments to Toby's answer it seems that you would like to be able to have MVC apps used as a component within a new app. Rails Engines (See http://rails-engines.org) provides this functionality. You simply install the engines gem and place apps in vendor/plugins and its modles/views/controller are all accessible.

    This does not really conform to HMVC where the controllers in the new app delegate to other controllers. But like Toby I do not see the advantage of that.

    What is nice about the Engines approach is that you can over ride any of models in the plugin by just adding a version of the model to the new apps app/model folder (same applies for views and controllers)

    I have overidden app/views/layouts to give my Authentication app/plugin the same look and feel as the application it is included in.

    For Rails 3 Railtie takes the place of engines and is officially supported (and actually used - Action Mailer is a Railtie plugin. I have not used it myself yet though.

    Check it out at http://edgeapi.rubyonrails.org/classes/Rails/Railtie.html

    A nice write up on it is also here http://www.igvita.com/2010/08/04/rails-3-internals-railtie-creating-plugins/