Class: Rails::CommandsTasks
- Defined in:
- railties/lib/rails/commands/commands_tasks.rb
Overview
This is a class which takes in a rails command and initiates the appropriate initiation sequence.
Warning: This class mutates ARGV because some commands require manipulating it before they are run.
Constant Summary collapse
- HELP_MESSAGE =
<<-EOT Usage: rails COMMAND [ARGS] The most common rails commands are: 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" In addition to those, there are: application Generate the Rails application code destroy Undo code generated with "generate" (short-cut alias: "d") plugin new Generates skeleton for developing a Rails plugin runner Run a piece of code in the application environment (short-cut alias: "r") All commands can be run with -h (or --help) for more information. EOT
- COMMAND_WHITELIST =
%(plugin generate destroy console server dbconsole application runner new version help)
Instance Attribute Summary collapse
-
#argv ⇒ Object
readonly
Returns the value of attribute argv.
Instance Method Summary collapse
- #application ⇒ Object
- #console ⇒ Object
- #dbconsole ⇒ Object
- #generate ⇒ Object
- #help ⇒ Object
-
#initialize(argv) ⇒ CommandsTasks
constructor
A new instance of CommandsTasks.
- #new ⇒ Object
- #plugin ⇒ Object
- #run_command!(command) ⇒ Object
- #runner ⇒ Object
- #server ⇒ Object
- #version ⇒ Object
Constructor Details
#initialize(argv) ⇒ CommandsTasks
Returns a new instance of CommandsTasks.
33 34 35 |
# File 'railties/lib/rails/commands/commands_tasks.rb', line 33 def initialize(argv) @argv = argv end |
Instance Attribute Details
#argv ⇒ Object (readonly)
Returns the value of attribute argv
8 9 10 |
# File 'railties/lib/rails/commands/commands_tasks.rb', line 8 def argv @argv end |
Instance Method Details
#application ⇒ Object
86 87 88 |
# File 'railties/lib/rails/commands/commands_tasks.rb', line 86 def application require_command!("application") end |
#console ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'railties/lib/rails/commands/commands_tasks.rb', line 54 def console require_command!("console") = Rails::Console.parse_arguments(argv) # RAILS_ENV needs to be set before config/application is required ENV['RAILS_ENV'] = [:environment] if [:environment] # shift ARGV so IRB doesn't freak shift_argv! require_application_and_environment! Rails::Console.start(Rails.application, ) end |
#dbconsole ⇒ Object
81 82 83 84 |
# File 'railties/lib/rails/commands/commands_tasks.rb', line 81 def dbconsole require_command!("dbconsole") Rails::DBConsole.start end |
#generate ⇒ Object
50 51 52 |
# File 'railties/lib/rails/commands/commands_tasks.rb', line 50 def generate generate_or_destroy(:generate) end |
#help ⇒ Object
107 108 109 |
# File 'railties/lib/rails/commands/commands_tasks.rb', line 107 def help end |
#new ⇒ Object
94 95 96 97 98 99 100 |
# File 'railties/lib/rails/commands/commands_tasks.rb', line 94 def new if %w(-h --help).include?(argv.first) require_command!("application") else exit_with_initialization_warning! end end |
#plugin ⇒ Object
46 47 48 |
# File 'railties/lib/rails/commands/commands_tasks.rb', line 46 def plugin require_command!("plugin") end |
#run_command!(command) ⇒ Object
37 38 39 40 41 42 43 44 |
# File 'railties/lib/rails/commands/commands_tasks.rb', line 37 def run_command!(command) command = parse_command(command) if COMMAND_WHITELIST.include?(command) send(command) else (command) end end |
#runner ⇒ Object
90 91 92 |
# File 'railties/lib/rails/commands/commands_tasks.rb', line 90 def runner require_command!("runner") end |
#server ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'railties/lib/rails/commands/commands_tasks.rb', line 68 def server set_application_directory! require_command!("server") Rails::Server.new.tap do |server| # We need to require application after the server sets environment, # otherwise the --environment option given to the server won't propagate. require APP_PATH Dir.chdir(Rails.application.root) server.start end end |
#version ⇒ Object
102 103 104 105 |
# File 'railties/lib/rails/commands/commands_tasks.rb', line 102 def version argv.unshift '--version' require_command!("application") end |