class Rails::Command::Base
Inherits From
-
class
Thor
-
module
Rails::
Command:: Actions
Public class methods
Source code GitHub
# File railties/lib/rails/command/base.rb, line 86
def banner(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
Sets the base_name
taking into account the current class namespace.
Rails::Command::TestCommand.base_name # => 'rails'
Source code GitHub
# 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
Return command name without namespaces.
Rails::Command::TestCommand.command_name # => 'test'
Source code GitHub
# 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 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
.
Source code GitHub
# 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
Tries to get the description from a USAGE file one folder above the command root.
Source code GitHub
# File railties/lib/rails/command/base.rb, line 34
def desc(usage = nil, description = nil, options = {})
if usage
super
else
class_usage
end
end
Returns true when the app is a Rails engine.
Source code GitHub
# File railties/lib/rails/command/base.rb, line 28
def engine?
defined?(ENGINE_ROOT)
end
Source code GitHub
# File railties/lib/rails/command/base.rb, line 82
def executable(command_name = self.command_name)
"#{bin} #{namespaced_name(command_name)}"
end
Convenience method to hide this command from the available ones when running rails command.
Source code GitHub
# File railties/lib/rails/command/base.rb, line 55
def hide_command!
Rails::Command.hidden_commands << self
end
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.
Source code GitHub
# 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
Source code 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
Path to lookup a USAGE description in a file.
Source code GitHub
# File railties/lib/rails/command/base.rb, line 129
def usage_path
@usage_path = resolve_path("USAGE") unless defined?(@usage_path)
@usage_path
end