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.
class StylesheetGenerator < Rails::Generator::Base def manifest record do |m| m.directory('public/stylesheets') m.file('application.css', 'public/stylesheets/application.css') end end end
See Rails::Generator::Commands::Create for a list of methods available to the manifest.