9 Generate a Rails Engine plugin:
11 rails plugin new myplugin --skip-bundle --full
16 * [Rails::Railtie](http://edgeapi.rubyonrails.org/classes/Rails/Railtie.html)
18 post](http://www.engineyard.com/blog/2010/extending-rails-3-with-railties/)
20 Subclass Railtie and provide an `initializer` method.
23 class Railtie < Rails::Railtie
24 initializer "newplugin.initialize" do |app|
26 # subscribe to all rails notifications: controllers, AR, etc.
27 ActiveSupport::Notifications.subscribe do |*args|
28 event = ActiveSupport::Notifications::Event.new(*args)
29 puts "Got notification: #{event.inspect}"
39 * [ActionDispatch::Routing::Mapper](http://api.rubyonrails.org/classes/ActionDispatch/Routing/Mapper.html)
41 To create custom `routes.rb` keywords:
46 class ActionDispatch::Routing
60 constraint = lambda { |request| request... }
62 constraints(constraint) { yield }
68 * [Guide: generators](http://guides.rubyonrails.org/generators.html)
69 * [ActiveRecord::Generators::Base](http://api.rubyonrails.org/classes/ActiveRecord/Generators/Base.html)
74 # lib/generators/initializer_generator.rb
75 class InitializerGenerator < Rails::Generators::Base
76 def create_initializer_file
77 create_file "config/initializers/initializer.rb", "# Add initialization content here"
81 * Extend `Rails::Generators::Base`.
82 * Each public method in the generator is executed when a generator is invoked.
84 ### Generating a generator
86 $ rails generate generator initializer
90 Use `NamedBase` instead if you want to take an argument. It will be available as
93 class InitializerGenerator < Rails::Generators::Base
101 class InitializerGenerator < Rails::Generators::NamedBase
103 source_root File.expand_path("../templates", __FILE__)
104 desc "Description goes here."
107 ### Generators lookup
109 When invoking `rails g XXX`:
111 [rails/]generators/XXX/XXX_generator.rb
112 [rails/]generators/XXX_generator.rb
114 When invoking `rails g XXX:YYY`:
116 [rails/]generators/XXX/YYY_generator.rb
118 ActiveModel 'acts as'
119 ---------------------
121 # yaffle/lib/yaffle/acts_as_yaffle.rb
124 extend ActiveSupport::Concern
130 def acts_as_yaffle(options = {})
131 # your code will go here
137 ActiveRecord::Base.send :include, Yaffle::ActsAsYaffle