#compdef rails #autoload local -a _1st_arguments _1st_arguments=( 'generate:Generate new code (short-cut alias: "g")' 'console:Start the Rails console (short-cut alias: "c")' 'server:Start the Rails server (short-cut alias: "s")' 'dbconsole:Start a console for the database specified in config/database.yml (short-cut alias: "db")' 'new:Create a new Rails application. "rails new my_app" creates a new application called MyApp in "./my_app"' 'application:Generate the Rails application code' 'destroy:Undo code generated with "generate"' 'benchmarker:See how fast a piece of code runs' 'profiler:Get profile information from a piece of code' 'plugin:Install a plugin' 'plugin new:Generates skeleton for developing a Rails plugin' 'runner:Run a piece of code in the application environment (short-cut alias: "r")' ) _rails_generate_arguments() { generate_arguments=( assets controller decorator generator helper integration_test mailer migration model observer performance_test plugin resource scaffold scaffold_controller session_migration stylesheets task ) } _arguments \ '(--version)--version[show version]' \ '(--help)--help[show help]' \ '*:: :->subcmds' && return 0 if (( CURRENT == 1 )); then _describe -t commands "rails subcommand" _1st_arguments return else _files return fi case "$words[1]" in g|generate) _rails_generate_arguments _wanted generate_arguments expl 'all generate' compadd -a generate_arguments ;; d|destroy) _rails_generate_arguments _wanted generate_arguments expl 'all generate' compadd -a generate_arguments ;; esac