H.J. Blok wrote:
> Hello,
> 
> I've a question about Rails 3 Engines. I'm looking everywhere for good
> documentation on this subject, but didn't find it.
> 
> I'm trying to create a mountable app (embedding a Rails application in
> another Rails application). Both the 'base' application and the
> 'embedded' application are created with rails3.0.0.rc. To behave as
> Engine the 'embedded' application has the following code in
> 'lib/my_engine.rb':
> 
> # lib/my_engine.rb
> require "my_engine"
> require "rails"
> 
> module MyEngine
>   class Engine < Rails::Engine
>   end
> end
> 
> In the Gemfile of the 'base' application I've included MyEngine as a
> gem, using the path directive (to be able to change code without
> rebuilding the gem).
> 
> # Gemfile
> gem "my_engine", :path => "../my_engine"
> 
> 
> When I try to start the 'base' application it raises a NameError:
> 
> uninitialized constant MyEngine::Application (NameError)
> 
> 
> Does anybody have good (Rails3 RC based) documentation on how to create
> a mountable app?
> 
> And what would be the 'Rails-way' of solving this problem?
> 
> Kind regards,
> 
> Harm-Jan

>From the code you posted, I don't see a problem.

I would suggest following the structure of each framework and how they 
use Railties.

# lib/my_engine.rb
require 'active_support'

module MyEngine
  extend ActiveSupport::Autoload

  autoload :MyClass
  autoload :Whatever
end

# lib/my_engine/engine.rb
require 'my_engine'

module MyEngine
  class Engine < Rails::Engine

  end
end

And now you have 3 different ways to initialize the engine. If you leave 
your gem named 'my_engine', you need to put `require 'my_engine/engine'` 
in lib/my_engine.rb.
If you rename your gem to 'myengine', you can require the engine inside 
of the base app with `require 'my_engine/engine'` inside the bootup or 
add another file called lib/myengine.rb that only has `require 
'my_engine/engine'` in it.
-- 
Posted via http://www.ruby-forum.com/.

-- 
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 [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to