edge badge
Methods
B
C
D
E
H
N
P
U
Included Modules
Class Public methods
banner(*)

Use Rails' default banner.

# File railties/lib/rails/command/base.rb, line 76
def banner(*)
  "#{executable} #{arguments.map(&:usage).join(' ')} [options]".squish
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 83
def base_name
  @base_name ||= begin
    if base = name.to_s.split("::").first
      base.underscore
    end
  end
end
command_name()

Return command name without namespaces.

Rails::Command::TestCommand.command_name # => 'test'
# File railties/lib/rails/command/base.rb, line 94
def command_name
  @command_name ||= begin
    if command = name.to_s.split("::").last
      command.chomp!("Command")
      command.underscore
    end
  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 Rails::Command::TestCommand placed in rails/command/test_command.rb would return rails/test.

# File railties/lib/rails/command/base.rb, line 116
def default_command_root
  path = File.expand_path(File.join("../commands", command_root_namespace), __dir__)
  path if File.exist?(path)
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 26
def desc(usage = nil, description = nil, options = {})
  if usage
    super
  else
    @desc ||= ERB.new(File.read(usage_path)).result(binding) if usage_path
  end
end
engine?()

Returns true when the app is a Rails engine.

# File railties/lib/rails/command/base.rb, line 20
def engine?
  defined?(ENGINE_ROOT)
end
executable()
# File railties/lib/rails/command/base.rb, line 71
def executable
  "bin/rails #{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 47
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 Command at the end of the class is removed.

# File railties/lib/rails/command/base.rb, line 37
def namespace(name = nil)
  if name
    super
  else
    @namespace ||= super.chomp("_command").sub(/:command:/, ":")
  end
end
printing_commands()
# File railties/lib/rails/command/base.rb, line 67
def printing_commands
  namespaced_commands
end
usage_path()

Path to lookup a USAGE description in a file.

# File railties/lib/rails/command/base.rb, line 104
def usage_path
  if default_command_root
    path = File.join(default_command_root, "USAGE")
    path if File.exist?(path)
  end
end
Instance Public methods
help()
# File railties/lib/rails/command/base.rb, line 147
def help
  if command_name = self.class.command_name
    self.class.command_help(shell, command_name)
  else
    super
  end
end