sair  do grupo

queria  um nacional

2010/4/24 hornairs <harry.brund...@gmail.com>

> I'm trying to create several large applications that share 60-80
> percent of their functionality. I'd like to find some way to abstract
> the common functionality into a gem, plugin, or engine which I can
> then deploy as many times as needed for each application. The catch is
> each app will definitely need that 20% extra functionality and it may
> include changes or enhancements to existing functionality found in the
> core. This includes changes to views and layouts, controllers, models,
> migrations, tests, etc. I also anticipate that through the development
> of these applications bugfixes/new features will be added to the core,
> and it'd be great if all the apps built on top of this core could
> benefit from them.
>
> It's been suggested to me to use Engines, but I've encountered a
> number of problems.
>
> First, there doesn't seem to be any way to reopen classes in the
> application space as far as I can tell. If you define a model in the
> engine's app folder and not in the applications app folder, Rails will
> find the engine model and load it and everything will good. If you
> define it in both folders, it will find the definition in the
> application's app folder and not look anywhere else, so the engine
> code never gets loaded. This means I can't reopen my engine's classes
> to modify them, which is a really big issue. My solution to this is to
> explicitly require the engine space file from inside the application
> space file and then subclass the classes defined by the engine in the
> application space file. This is far from optimal because a) it sucks
> having to require all those files manually, b) the automatic file
> reloading across requests seems to be broken, c) the application code
> is spread across many locations and I find it harder to navigate and
> debug, and d) views can't be "required" and then partially overridden
> or anything like that.
>
> I'm also unsure of how things like tests will play out. I've been
> writing all my tests in the application space for now but the tests
> that test the core should go into it no? Should I just test overridden
> or new functionality in the app space? How can I have my test suite
> run the tests from the engine at the same time?
>
> Migrations are crappy too, how can I manage changes to schema that the
> application needs on top of those made by the core? Do I wrangle one
> of the file copy solutions and move core migrations into the app
> migrations folder? I guess the timestamps would prevent conflicts and
> I would just have to ensure the application's migrations which change
> the schema to reflect that app's specific needs are run after the core
> migrations.
>
> Any tips or help or suggestions? I'm using Rails 3 and Railtie::Engine
> right now, and I'm not that far in so I could still change everything
> if need be. I also saw this (http://github.com/pivotal/desert) which
> seems to mitigate a lot of these issues but is a little outdated and
> far from Rails 3 friendly.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To post to this group, send email to rubyonrails-t...@googlegroups.com.
> To unsubscribe from this group, send email to
> rubyonrails-talk+unsubscr...@googlegroups.com<rubyonrails-talk%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/rubyonrails-talk?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-t...@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to