Class: Rails::Command::Base
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Subclasses:
Rails::Command::AboutCommand, Rails::Command::ApplicationCommand, Rails::Command::ConsoleCommand, Rails::Command::CredentialsCommand, Rails::Command::DbconsoleCommand, Rails::Command::DestroyCommand, Rails::Command::DevCommand, 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::SecretsCommand, Rails::Command::ServerCommand, Rails::Command::TestCommand, Rails::Command::UnusedRoutesCommand, Rails::Command::VersionCommand, 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