aboutsummaryrefslogblamecommitdiffstats
path: root/railties/guides/source/engines.textile
blob: dc87ac4095fb88820260be34cb92a9fd703a3cf4 (plain) (tree)



































                                                                                                                                                                                                                                                                                                                                                       
h2. Getting Started with Engines

In this guide you will learn about engines and how they can be used to provide additional functionality to their host applications through a clean and very easy-to-use interface. You will learn the following things in this guide:

* What are engines
* Generating an engine
* Building features for the engine
* Hooking the engine into an application
* Overriding engine functionality in the application

endprologue.

h3. What are engines?

Engines can be considered miniature applications that provide functionality to their host applications. A Rails application is actually just a "supercharged" engine, with the `Rails::Application` class inheriting from `Rails::Engine`. Therefore, engines and applications share common functionality but are at the same time two separate beasts.

h3. Generating an engine

TODO: The engine that will be generated for this guide will be called "blorgh". It's a blogging engine that provides posts and comments and that's it.

TODO: Describe here the process of generating an engine and what an engine comes with.

h3. Providing engine functionality

TODO: Brief explanation of what this engine is going to be doing and what we will have once we are done.
TODO: Generate a posts scaffold (maybe?) for the engine
TODO: Generate a comments scaffold (maybe?) for the engine

h3. Hooking into application

TODO: Application will provide a User foundation class which the engine hooks into through a configuration setting, configurable in the application's initializers. The engine will be mounted at the +/blog+ path in the application.

h3. Overriding engine functionality

TODO: Cover how to override engine functionality in the engine, such as controllers and views.
IDEA: I like Devise's +devise :controllers => { "sessions" => "sessions" }+ idea. Perhaps we could incorporate that into the guide?