Class: Rails::Command::Base
| Relationships & Source Files | |
| Extension / Inclusion / Inheritance Descendants | |
| Subclasses: 
          Rails::Command::AboutCommand, Rails::Command::ApplicationCommand, Rails::Command::BootCommand, Rails::Command::ConsoleCommand, Rails::Command::CredentialsCommand, Rails::Command::DbconsoleCommand, Rails::Command::DestroyCommand, Rails::Command::DevCommand, Rails::Command::DevcontainerCommand, Rails::Command::EncryptedCommand, Rails::Command::GemHelpCommand, Rails::Command::GenerateCommand, Rails::Command::HelpCommand, Rails::Command::InitializersCommand, Rails::Command::MiddlewareCommand, Rails::Command::NewCommand, Rails::Command::NotesCommand, Rails::Command::PluginCommand, Rails::Command::RakeCommand, Rails::Command::RestartCommand, Rails::Command::RoutesCommand, Rails::Command::RunnerCommand, Rails::Command::SecretCommand, Rails::Command::ServerCommand, Rails::Command::TestCommand, Rails::Command::UnusedRoutesCommand, Rails::Command::VersionCommand, Rails::Command::App::UpdateCommand, Rails::Command::Db::System::ChangeCommand
         | |
| Super Chains via Extension / Inclusion / Inheritance | |
| Class Chain: 
          self,
          Thor
         | |
| Instance Chain: 
          self,
           Actions,
          Thor | |
| Inherits: | Thor 
 | 
| Defined in: | railties/lib/rails/command/base.rb | 
Class Attribute Summary
- .bin rw
- .bin? ⇒ Boolean rw
- 
    
      .engine?  ⇒ Boolean 
    
    readonly
    Returns true when the app is a Rails engine. 
Class Method Summary
- .banner(command = nil)
- 
    
      .base_name  
    
    Sets the base_name taking into account the current class namespace. 
- 
    
      .command_name  
    
    Return command name without namespaces. 
- 
    
      .default_command_root  
    
    Default file root to place extra files a command might need, placed one folder above the command file. 
- 
    
      .desc(usage = nil, description = nil, options = {})  
    
    Tries to get the description from a USAGE file one folder above the command root. 
- .executable(command_name = self.command_name)
- 
    
      .hide_command!  
    
    Convenience method to hide this command from the available ones when running rails command. 
- 
    
      .namespace(name = nil)  
    
    Convenience method to get the namespace from the class name. 
- .printing_commands
- 
    
      .usage_path  
    
    Path to lookup a USAGE description in a file. 
Instance Method Summary
Actions - Included
| #boot_application!, #load_environment_config!, | |
| #load_generators | See additional method definition at line 36. | 
| #load_tasks | See additional method definition at line 31. | 
| #require_application!, | |
| #set_application_directory! | Change to the application’s path if there is no  | 
Class Attribute Details
.bin (rw)
[ GitHub ]# File 'railties/lib/rails/command/base.rb', line 20
class_attribute :bin, instance_accessor: false, default: "bin/rails"
    .bin?  ⇒ Boolean  (rw)
  
  [ GitHub ]
# File 'railties/lib/rails/command/base.rb', line 20
class_attribute :bin, instance_accessor: false, default: "bin/rails"
    .engine?  ⇒ Boolean  (readonly)
  
Returns true when the app is a Rails engine.
# File 'railties/lib/rails/command/base.rb', line 28
def engine? defined?(ENGINE_ROOT) end
Class Method Details
.banner(command = nil)
[ GitHub ]# File 'railties/lib/rails/command/base.rb', line 86
def (command = nil, *) if command # Similar to Thor's banner, but show the namespace (minus the # "rails:" prefix), and show the command's declared bin instead of # the command runner. command.formatted_usage(self).gsub(/^#{namespace}:(\w+)/) { executable($1) } else executable end end
.base_name
Sets the base_name taking into account the current class namespace.
Rails::Command::TestCommand.base_name # => 'rails'# File 'railties/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
Return command name without namespaces.
Rails::Command::TestCommand.command_name # => 'test'# File 'railties/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
Default file root to place extra files a command might need, placed one folder above the command file.
For a TestCommand placed in rails/command/test_command.rb would return rails/test.
# File 'railties/lib/rails/command/base.rb', line 139
def default_command_root @default_command_root = resolve_path(".") unless defined?(@default_command_root) @default_command_root end
.desc(usage = nil, description = nil, options = {})
Tries to get the description from a USAGE file one folder above the command root.
# File 'railties/lib/rails/command/base.rb', line 34
def desc(usage = nil, description = nil, = {}) if usage super else class_usage end end
.executable(command_name = self.command_name)
[ GitHub ]# File 'railties/lib/rails/command/base.rb', line 82
def executable(command_name = self.command_name) "#{bin} #{namespaced_name(command_name)}" end
.hide_command!
Convenience method to hide this command from the available ones when running rails command.
# File 'railties/lib/rails/command/base.rb', line 55
def hide_command! Rails::Command.hidden_commands << self end
.namespace(name = nil)
Convenience method to get the namespace from the class name. It’s the same as Thor default except that the ::Rails::Command at the end of the class is removed.
# File 'railties/lib/rails/command/base.rb', line 45
def namespace(name = nil) if name super else @namespace ||= super.chomp("_command").sub(/:command:/, ":") end end
.printing_commands
[ GitHub ]# File 'railties/lib/rails/command/base.rb', line 76
def printing_commands commands.filter_map do |name, command| [namespaced_name(name), command.description] unless command.hidden? end end
.usage_path
Path to lookup a USAGE description in a file.
# File 'railties/lib/rails/command/base.rb', line 129
def usage_path @usage_path = resolve_path("USAGE") unless defined?(@usage_path) @usage_path end