diff options
author | Pratik Naik <pratiknaik@gmail.com> | 2008-10-21 18:33:40 +0100 |
---|---|---|
committer | Pratik Naik <pratiknaik@gmail.com> | 2008-10-21 18:33:40 +0100 |
commit | a03e2b356c66ddc8809fa2b23a2a7d652f173b8b (patch) | |
tree | ab8552913475bf94a78e4cbfbae804b2ecd9eca2 /railties/doc/guides/source/creating_plugins/custom_generator.txt | |
parent | 18542c9e00209679bdaacf64075819fb887ec856 (diff) | |
download | rails-a03e2b356c66ddc8809fa2b23a2a7d652f173b8b.tar.gz rails-a03e2b356c66ddc8809fa2b23a2a7d652f173b8b.tar.bz2 rails-a03e2b356c66ddc8809fa2b23a2a7d652f173b8b.zip |
Merge with docrails. Also add a rake task to generate guides in your rails application :
rake doc:guides
The rake task will generate guides inside doc/guides directory of your application. Open index.html to browse.
Diffstat (limited to 'railties/doc/guides/source/creating_plugins/custom_generator.txt')
-rw-r--r-- | railties/doc/guides/source/creating_plugins/custom_generator.txt | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/railties/doc/guides/source/creating_plugins/custom_generator.txt b/railties/doc/guides/source/creating_plugins/custom_generator.txt new file mode 100644 index 0000000000..6d9613ea01 --- /dev/null +++ b/railties/doc/guides/source/creating_plugins/custom_generator.txt @@ -0,0 +1,69 @@ +== 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. |