I trying to load two similar Rails Engine in single app
..
In my app Engine A like a core and engine B like a specific to some
other purpose.
In this two engines have many models,some models have shared in both
engines.
In this i faced one problem if i shared the model means all the method
is not loaded correctly..
.Ex,i have article model in both engines Engine A have 5 methods and i
have over-ride the model in Engine B it has 2 function.
what i thought is Engine B article model have Engine A and Engine B
methods
,but what it's happen article model have only Engine B model methods
only.
if i load manually means it working correctly.
I have load one engine in one single app it is working correctly..
Please tell me how to load 2 similar engines in one single app...
This is a question for rubyonrails-talk, as this mailing list is reserved for Core members discussing Rails development. So please post your questions there,see this presentation for better overview of Rails Engine.
You should almost always namespace your models in engine, no matter if you use isolate_namespace or not. Please read the engines guide to see what isolated_namespace changes: http://edgeguides.rubyonrails.org/engines.html
And so you would have a CoreEngine::Article and a Microsite::Article and there would be no conflicts or functionality sharing.
But for what I understood of your email, you want microsite to inherit from core_engine. What I would do is still namespace them and then make the microsite inherit from it, like so:
core_engine/models/core_engine/article.rb
class CoreEngine::Article < ActiveRecord::Base
…
end
microsite/models/microsite/article.rb
class Microsite::Article < CoreEngine::Article
…
end
If you really need to call it Article in your main app, you can do this:
core_engine/models/article.rb
class ::Article < ActiveRecord::Base
…
end
microsite/models/article.rb
class Article < ::Article
…
end
Bare in mind though that in this solution microsite’s article is inheriting from the application article, which means you will have to make sure core_engine loads to the app before microsite.