Hi, What are the main differences between components vs. engines? It looks like the are both vertical slices of an application. Thanks, Peter _______________________________________________ Rails mailing list Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org http://lists.rubyonrails.org/mailman/listinfo/rails
http://rails-engines.rubyforge.org/wiki/wiki.pl?ComponentsPluginsEngines Components are essentially like partials with their own controller logic - meant to be rendered within other views. Engines can have full-blown views, controllers, helpers, possibly models, libraries... all or only as much of that list as you need. - james On 11/25/05, Peter Michaux <petermichaux-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Hi, > > What are the main differences between components vs. engines? It looks like > the are both vertical slices of an application. > > Thanks, > Peter > > _______________________________________________ > Rails mailing list > Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org > http://lists.rubyonrails.org/mailman/listinfo/rails > > >
Peter Michaux wrote:> > What are the main differences between components vs. engines? It looks > like the are both vertical slices of an application.Components are less feature blessed, but fit very nicely into the framework. The Engine is opposite of that. --Steve
On 11/25/05, Stephen Waits <steve-g8GSkY9QmIteoWH0uzbU5w@public.gmane.org> wrote:> Components are less feature blessed, but fit very nicely into the > framework. The Engine is opposite of that.*sigh*
Hi,
Reading in the Rails book[1] and looking at the ActiveRBAC component[2] it
seems that components have a nasty directory structure. I don''t see any
hierarchical logic to the following structure. Lumping models and
controllers and then somehow views are contained in this lump.
components/
component/
role.rb
role_controller.rb
role/
view.rhtml
Integrated in a Rails apps these files would be so nicely divided up in the
app directory
app/
models/
role.rb
controllers/
role_controller.rb
view/
view.rhtml
Does the seemingly messy directory structure of the component indicate that
the components facility is asked to do too much in this case? Could the
component''s files structure be improved or does convention make that
difficult? Would an engine be a better way to go?
Thanks,
Peter
[1] Agile Web Development with Rails (p376)
[2] https://rbaconrails.turingstudio.com/trac/wiki
_______________________________________________
Rails mailing list
Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org
http://lists.rubyonrails.org/mailman/listinfo/rails
>Reading in the Rails book[1] and looking at the ActiveRBACcomponent[2] it seems that components have a nasty directory structure. I don''t see any hierarchical logic to the following structure. I think you''ve nailed it - I''ve been avoiding components for the same reason. The parts of my app that I''d like to reuse in other projects, I''m planning on building as engines. Hammed
Back in the days of 0.9, we were looking at cleaning up components to
match the app structure. So you''d be able to do things like:
components/
component/
controllers/
role_controller.rb
models/
role.rb
views/
role/
view.rhtml
If I recall, the changes included a few extra default path patterns, a
2-line change in rendering so that one could override component layouts
from within the regular app/ tree, and a minor fix to
uses_component_template_root.
The sticking point was that each component controller would need to
include the line ''uses_component_template_root'' which was the
one
sticking point I never figured out how to do. If that could be figured
out, one could use svn externals to another project''s app/ directory,
and have a local copy with no fuss.
Alas, I never had the time to finish things, and in the rapid
development going forward I gave up on them.
>From what I understand though, the reason components is so crappy is
because someone half-thought through the idea, and abandoned it.
Nobody''s backed it out of the framework, and nobody''s stepped
up to do
it right either.
- Jamie
On Fri, 2005-11-25 at 20:11 -0800, Peter Michaux wrote:> Hi,
>
> Reading in the Rails book[1] and looking at the ActiveRBAC
> component[2] it seems that components have a nasty directory
> structure. I don''t see any hierarchical logic to the following
> structure. Lumping models and controllers and then somehow views are
> contained in this lump.
>
> components/
> component/
> role.rb
> role_controller.rb
> role/
> view.rhtml
>
> Integrated in a Rails apps these files would be so nicely divided up
> in the app directory
>
> app/
> models/
> role.rb
> controllers/
> role_controller.rb
> view/
> view.rhtml
>
> Does the seemingly messy directory structure of the component indicate
> that the components facility is asked to do too much in this case?
> Could the component''s files structure be improved or does
convention
> make that difficult? Would an engine be a better way to go?
>
> Thanks,
> Peter
>
> [1] Agile Web Development with Rails (p376)
> [2] https://rbaconrails.turingstudio.com/trac/wiki
> _______________________________________________
> Rails mailing list
> Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org
> http://lists.rubyonrails.org/mailman/listinfo/rails
Interesting points there Jamie. I''ve had a bit of a stab at something similar, but just like you, I haven''t persisted with it due to the need to actually press on with development. I''d really like components to get to a point where (or be replaced by) they are identical from rails apps themselves. This self-similar structure would allow for better re-use of regularly repeated parts of the application which could be tested, and possibly also used, as stand alone apps. And before anyone says it, yes engines are great, but no they don''t do the same thing. Engines give a site an area of functionality (a vertical slice if you will). Components give your site a drag and drop ''think'' which contains complex functionality but can be ''instanced'' many times on the site. eg: Engine: I want my site to have blogging functionality, accessed via the blog controller. Component: I want to be able to add editable blogs to pages on my site, accessed via whatever controller manages those pages. regards, Craig