Chapter 11. Extending Rails
A strong belief held by the creator of the Rails framework is that the framework should be kept limited in features and focused on the core technology related to developing database-backed Web applications. What is core technology consists of in a Web application is something that has been and will continue to be debated by Web users and programmers, both in person and across the Internet. However, you are not likely to see things like login systems, message boards, image management, or other application-level features built into any future versions of Rails. That said, if you develop more than one Rails application, you are likely to come across chunks of functionality that you find yourself repeating in every application you write. These chunks of functionality, which are not core to Rails but are common to most of the applications you write, can be leveraged as extensions to the Rails framework using Rails generators, plugins, and engines.
Rails supports an excellent model for extensibility that makes it easy to add the specific features you want as extensions to Rails. You can then easily reuse those extensions in your other applications, as well as make them available to the public at large.
Beyond the Core
Rails extensions often grow out of a feature that you originally implemented inside one or more applications prior to recognizing the value of such a feature as a reusable component. It is rare that you can plan upfront what all of the plugins for ...