Class: Rails::CommandsTasks
- Inherits:
-
Object
- Object
- Rails::CommandsTasks
- Includes:
- RakeProxy
- Defined in:
- 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") test Run tests (short-cut alias: "t") 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" All commands can be run with -h (or --help) for more information. In addition to those commands, there are: EOT
- ADDITIONAL_COMMANDS =
[ [ '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")' ] ]
- COMMAND_WHITELIST =
%w(plugin generate destroy console server dbconsole runner new version help test)
Instance Attribute Summary collapse
-
#argv ⇒ Object
readonly
Returns the value of attribute argv.
Instance Method Summary collapse
- #console ⇒ Object
- #dbconsole ⇒ Object
- #destroy ⇒ 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
- #test ⇒ Object
- #version ⇒ Object
Constructor Details
#initialize(argv) ⇒ CommandsTasks
Returns a new instance of CommandsTasks.
41 42 43 |
# File 'lib/rails/commands/commands_tasks.rb', line 41 def initialize(argv) @argv = argv end |
Instance Attribute Details
#argv ⇒ Object (readonly)
Returns the value of attribute argv.
12 13 14 |
# File 'lib/rails/commands/commands_tasks.rb', line 12 def argv @argv end |
Instance Method Details
#console ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/rails/commands/commands_tasks.rb', line 67 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
98 99 100 101 |
# File 'lib/rails/commands/commands_tasks.rb', line 98 def dbconsole require_command!("dbconsole") Rails::DBConsole.start end |
#destroy ⇒ Object
63 64 65 |
# File 'lib/rails/commands/commands_tasks.rb', line 63 def destroy generate_or_destroy(:destroy) end |
#generate ⇒ Object
59 60 61 |
# File 'lib/rails/commands/commands_tasks.rb', line 59 def generate generate_or_destroy(:generate) end |
#help ⇒ Object
120 121 122 123 |
# File 'lib/rails/commands/commands_tasks.rb', line 120 def help write_commands ADDITIONAL_COMMANDS + formatted_rake_tasks end |
#new ⇒ Object
107 108 109 110 111 112 113 |
# File 'lib/rails/commands/commands_tasks.rb', line 107 def new if %w(-h --help).include?(argv.first) require_command!("application") else exit_with_initialization_warning! end end |
#plugin ⇒ Object
55 56 57 |
# File 'lib/rails/commands/commands_tasks.rb', line 55 def plugin require_command!("plugin") end |
#run_command!(command) ⇒ Object
45 46 47 48 49 50 51 52 53 |
# File 'lib/rails/commands/commands_tasks.rb', line 45 def run_command!(command) command = parse_command(command) if COMMAND_WHITELIST.include?(command) send(command) else run_rake_task(command) end end |
#runner ⇒ Object
103 104 105 |
# File 'lib/rails/commands/commands_tasks.rb', line 103 def runner require_command!("runner") end |
#server ⇒ Object
81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/rails/commands/commands_tasks.rb', line 81 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 |
#test ⇒ Object
94 95 96 |
# File 'lib/rails/commands/commands_tasks.rb', line 94 def test require_command!("test") end |
#version ⇒ Object
115 116 117 118 |
# File 'lib/rails/commands/commands_tasks.rb', line 115 def version argv.unshift '--version' require_command!("application") end |