The base code generator is bare-bones. It sets up the source and destination paths and tells the logger whether to keep its trap shut.
For more comprehensive template-based passive code generation with arguments, you’ll want Rails::Generator::NamedBase.
Generators create a manifest of the actions they perform then hand the manifest to a command which replays the actions to do the heavy lifting (such as checking for existing files or creating directories if needed). Create, destroy, and list commands are included. Since a single manifest may be used by any command, creating new generators is as simple as writing some code templates and declaring what you’d like to do with them.