Class: Rails::Command::Base
- Inherits:
 - 
      Thor
      
        
- Object
 - Thor
 - Rails::Command::Base
 
 
- Includes:
 - Actions
 
- Defined in:
 - lib/rails/command/base.rb
 
Direct Known Subclasses
ApplicationCommand, ConsoleCommand, CredentialsCommand, Db::System::ChangeCommand, DbconsoleCommand, DestroyCommand, DevCommand, EncryptedCommand, GenerateCommand, HelpCommand, InitializersCommand, NewCommand, NotesCommand, PluginCommand, RakeCommand, RoutesCommand, RunnerCommand, SecretsCommand, ServerCommand, TestCommand, VersionCommand
Defined Under Namespace
Classes: CorrectableError, Error
Class Method Summary collapse
- 
  
    
      .banner  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Use Rails' default banner.
 - 
  
    
      .base_name  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Sets the base_name taking into account the current class namespace.
 - 
  
    
      .command_name  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Return command name without namespaces.
 - 
  
    
      .default_command_root  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Default file root to place extra files a command might need, placed one folder above the command file.
 - 
  
    
      .desc(usage = nil, description = nil, options = {})  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Tries to get the description from a USAGE file one folder above the command root.
 - 
  
    
      .engine?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
Returns true when the app is a Rails engine.
 - .executable ⇒ Object
 - 
  
    
      .exit_on_failure?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
:nodoc:.
 - 
  
    
      .hide_command!  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Convenience method to hide this command from the available ones when running rails command.
 - 
  
    
      .inherited(base)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
:nodoc:.
 - 
  
    
      .namespace(name = nil)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Convenience method to get the namespace from the class name.
 - 
  
    
      .perform(command, args, config)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
:nodoc:.
 - .printing_commands ⇒ Object
 - 
  
    
      .usage_path  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Path to lookup a USAGE description in a file.
 
Instance Method Summary collapse
Methods included from Actions
#load_generators, #load_tasks, #require_application!, #require_application_and_environment!, #require_environment!, #set_application_directory!
Class Method Details
.banner ⇒ Object
Use Rails' default banner.
      99 100 101  | 
    
      # File 'lib/rails/command/base.rb', line 99 def (*) "#{executable} #{arguments.map(&:usage).join(' ')} [options]".squish end  | 
  
.base_name ⇒ Object
Sets the base_name taking into account the current class namespace.
Rails::Command::TestCommand.base_name # => 'rails'
  
      106 107 108 109 110  | 
    
      # File 'lib/rails/command/base.rb', line 106 def base_name @base_name ||= if base = name.to_s.split("::").first base.underscore end end  | 
  
.command_name ⇒ Object
Return command name without namespaces.
Rails::Command::TestCommand.command_name # => 'test'
  
      115 116 117 118 119 120  | 
    
      # File 'lib/rails/command/base.rb', line 115 def command_name @command_name ||= if command = name.to_s.split("::").last command.chomp!("Command") command.underscore end end  | 
  
.default_command_root ⇒ Object
Default file root to place extra files a command might need, placed one folder above the command file.
For a Rails::Command::TestCommand placed in rails/command/test_command.rb would return rails/test.
      135 136 137 138  | 
    
      # File 'lib/rails/command/base.rb', line 135 def default_command_root path = File.(relative_command_path, __dir__) path if File.exist?(path) end  | 
  
.desc(usage = nil, description = nil, options = {}) ⇒ Object
Tries to get the description from a USAGE file one folder above the command root.
      49 50 51 52 53 54 55  | 
    
      # File 'lib/rails/command/base.rb', line 49 def desc(usage = nil, description = nil, = {}) if usage super else @desc ||= ERB.new(File.read(usage_path), trim_mode: "-").result(binding) if usage_path end end  | 
  
.engine? ⇒ Boolean
Returns true when the app is a Rails engine.
      43 44 45  | 
    
      # File 'lib/rails/command/base.rb', line 43 def engine? defined?(ENGINE_ROOT) end  | 
  
.executable ⇒ Object
      94 95 96  | 
    
      # File 'lib/rails/command/base.rb', line 94 def executable "rails #{command_name}" end  | 
  
.exit_on_failure? ⇒ Boolean
:nodoc:
      38 39 40  | 
    
      # File 'lib/rails/command/base.rb', line 38 def exit_on_failure? # :nodoc: false end  | 
  
.hide_command! ⇒ Object
Convenience method to hide this command from the available ones when running rails command.
      70 71 72  | 
    
      # File 'lib/rails/command/base.rb', line 70 def hide_command! Rails::Command.hidden_commands << self end  | 
  
.inherited(base) ⇒ Object
:nodoc:
      74 75 76 77 78 79 80  | 
    
      # File 'lib/rails/command/base.rb', line 74 def inherited(base) # :nodoc: super if base.name && !base.name.end_with?("Base") Rails::Command.subclasses << base end end  | 
  
.namespace(name = nil) ⇒ Object
Convenience method to get the namespace from the class name. It's the same as Thor default except that the Command at the end of the class is removed.
      60 61 62 63 64 65 66  | 
    
      # File 'lib/rails/command/base.rb', line 60 def namespace(name = nil) if name super else @namespace ||= super.chomp("_command").sub(/:command:/, ":") end end  | 
  
.perform(command, args, config) ⇒ Object
:nodoc:
      82 83 84 85 86 87 88  | 
    
      # File 'lib/rails/command/base.rb', line 82 def perform(command, args, config) # :nodoc: if Rails::Command::HELP_MAPPINGS.include?(args.first) command, args = "help", [] end dispatch(command, args.dup, nil, config) end  | 
  
.printing_commands ⇒ Object
      90 91 92  | 
    
      # File 'lib/rails/command/base.rb', line 90 def printing_commands namespaced_commands end  | 
  
.usage_path ⇒ Object
Path to lookup a USAGE description in a file.
      123 124 125 126 127 128  | 
    
      # File 'lib/rails/command/base.rb', line 123 def usage_path if default_command_root path = File.join(default_command_root, "USAGE") path if File.exist?(path) end end  | 
  
Instance Method Details
#help ⇒ Object
      174 175 176 177 178 179 180  | 
    
      # File 'lib/rails/command/base.rb', line 174 def help if command_name = self.class.command_name self.class.command_help(shell, command_name) else super end end  |