diff options
author | Pratik Naik <pratiknaik@gmail.com> | 2008-10-21 15:58:29 +0100 |
---|---|---|
committer | Pratik Naik <pratiknaik@gmail.com> | 2008-10-21 16:04:38 +0100 |
commit | 5265a8cd40a59ae792da3ed3f2a9648f15ecbd4e (patch) | |
tree | 44f66c3d1552e1821454658c653f062baada8668 /railties/doc/guides/source/creating_plugins/custom_generator.txt | |
parent | fa09de351c8045c7e7a0f268188ccf80c827b079 (diff) | |
download | rails-5265a8cd40a59ae792da3ed3f2a9648f15ecbd4e.tar.gz rails-5265a8cd40a59ae792da3ed3f2a9648f15ecbd4e.tar.bz2 rails-5265a8cd40a59ae792da3ed3f2a9648f15ecbd4e.zip |
Rearrange guides
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. |