As a side benefit, fix an (non-user-visible) bug in display_s5(). Also fixed a bug where removing orphaned pages did not expire cached summary pages.
70 lines
2.2 KiB
Plaintext
70 lines
2.2 KiB
Plaintext
== Add a custom generator command ==
|
|
|
|
You may have noticed above that you can used one of the built-in rails migration commands `m.migration_template`. You can create your own commands for these, using the following steps:
|
|
|
|
1. Add the require and hook statements to init.rb.
|
|
2. Create the commands - creating 3 sets, Create, Destroy, List.
|
|
3. Add the method to your generator.
|
|
|
|
Working with the internals of generators is beyond the scope of this tutorial, but here is a basic example:
|
|
|
|
[source, ruby]
|
|
-----------------------------------------------------------
|
|
# File: vendor/plugins/yaffle/init.rb
|
|
require "commands"
|
|
Rails::Generator::Commands::Create.send :include, Yaffle::Generator::Commands::Create
|
|
Rails::Generator::Commands::Destroy.send :include, Yaffle::Generator::Commands::Destroy
|
|
Rails::Generator::Commands::List.send :include, Yaffle::Generator::Commands::List
|
|
-----------------------------------------------------------
|
|
|
|
[source, ruby]
|
|
-----------------------------------------------------------
|
|
# File: vendor/plugins/yaffle/lib/commands.rb
|
|
|
|
require 'rails_generator'
|
|
require 'rails_generator/commands'
|
|
|
|
module Yaffle #:nodoc:
|
|
module Generator #:nodoc:
|
|
module Commands #:nodoc:
|
|
module Create
|
|
def yaffle_definition
|
|
file("definition.txt", "definition.txt")
|
|
end
|
|
end
|
|
|
|
module Destroy
|
|
def yaffle_definition
|
|
file("definition.txt", "definition.txt")
|
|
end
|
|
end
|
|
|
|
module List
|
|
def yaffle_definition
|
|
file("definition.txt", "definition.txt")
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
-----------------------------------------------------------
|
|
|
|
-----------------------------------------------------------
|
|
# File: vendor/plugins/yaffle/generators/yaffle/templates/definition.txt
|
|
|
|
Yaffle is a bird
|
|
-----------------------------------------------------------
|
|
|
|
[source, ruby]
|
|
-----------------------------------------------------------
|
|
# File: vendor/plugins/yaffle/generators/yaffle/yaffle_generator.rb
|
|
|
|
class YaffleGenerator < Rails::Generator::NamedBase
|
|
def manifest
|
|
m.yaffle_definition
|
|
end
|
|
end
|
|
-----------------------------------------------------------
|
|
|
|
This example just uses the built-in "file" method, but you could do anything that Ruby allows.
|