9 Generate a Rails Engine plugin:
11 rails plugin new myplugin --skip-bundle --full
18 * [Rails::Railtie](http://edgeapi.rubyonrails.org/classes/Rails/Railtie.html)
20 post](http://www.engineyard.com/blog/2010/extending-rails-3-with-railties/)
22 ### Initializer method
24 Subclass Railtie and provide an `initializer` method.
27 class Railtie < Rails::Railtie
28 initializer "newplugin.initialize" do |app|
30 # subscribe to all rails notifications: controllers, AR, etc.
31 ActiveSupport::Notifications.subscribe do |*args|
32 event = ActiveSupport::Notifications::Event.new(*args)
33 puts "Got notification: #{event.inspect}"
45 * [ActionDispatch::Routing::Mapper](http://api.rubyonrails.org/classes/ActionDispatch/Routing/Mapper.html)
49 To create custom `routes.rb` keywords:
54 class ActionDispatch::Routing
68 constraint = lambda { |request| request... }
70 constraints(constraint) { yield }
78 * [Guide: generators](http://guides.rubyonrails.org/generators.html)
79 * [ActiveRecord::Generators::Base](http://api.rubyonrails.org/classes/ActiveRecord/Generators/Base.html)
84 # lib/generators/initializer_generator.rb
85 class InitializerGenerator < Rails::Generators::Base
86 def create_initializer_file
87 create_file "config/initializers/initializer.rb", "# Add initialization content here"
91 * Extend `Rails::Generators::Base`.
92 * Each public method in the generator is executed when a generator is invoked.
94 ### Generating a generator
96 $ rails generate generator initializer
100 Use `NamedBase` instead if you want to take an argument. It will be available as
103 class InitializerGenerator < Rails::Generators::Base
111 class InitializerGenerator < Rails::Generators::NamedBase
113 source_root File.expand_path("../templates", __FILE__)
114 desc "Description goes here."
117 ### Generators lookup
119 When invoking `rails g XXX`:
121 [rails/]generators/XXX/XXX_generator.rb
122 [rails/]generators/XXX_generator.rb
124 When invoking `rails g XXX:YYY`:
126 [rails/]generators/XXX/YYY_generator.rb
128 ActiveModel 'acts as'
129 ---------------------
133 # yaffle/lib/yaffle/acts_as_yaffle.rb
136 extend ActiveSupport::Concern
142 def acts_as_yaffle(options = {})
143 # your code will go here
149 ActiveRecord::Base.send :include, Yaffle::ActsAsYaffle