W3cubDocs

/Ruby on Rails 7.0

class Rails::Command::Base

Parent:
Thor
Included modules:
Rails::Command::Actions

Public Class Methods

banner(*) Show source

Use Rails' default banner.

base_name() Show source
# 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

Sets the base_name taking into account the current class namespace.

Rails::Command::TestCommand.base_name # => 'rails'
command_name() Show source
# 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

Return command name without namespaces.

Rails::Command::TestCommand.command_name # => 'test'
default_command_root() Show source
# File railties/lib/rails/command/base.rb, line 135
def default_command_root
  path = File.expand_path(relative_command_path, __dir__)
  path if File.exist?(path)
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.

desc(usage = nil, description = nil, options = {}) Show source
# File railties/lib/rails/command/base.rb, line 49
def desc(usage = nil, description = nil, options = {})
  if usage
    super
  else
    @desc ||= ERB.new(File.read(usage_path), trim_mode: "-").result(binding) if usage_path
  end
end

Tries to get the description from a USAGE file one folder above the command root.

Calls superclass method
engine?() Show source
# File railties/lib/rails/command/base.rb, line 43
def engine?
  defined?(ENGINE_ROOT)
end

Returns true when the app is a Rails engine.

executable() Show source
# File railties/lib/rails/command/base.rb, line 94
def executable
  "rails #{command_name}"
end
hide_command!() Show source
# File railties/lib/rails/command/base.rb, line 70
def hide_command!
  Rails::Command.hidden_commands << self
end

Convenience method to hide this command from the available ones when running rails command.

namespace(name = nil) Show source
# File railties/lib/rails/command/base.rb, line 60
def namespace(name = nil)
  if name
    super
  else
    @namespace ||= super.chomp("_command").sub(/:command:/, ":")
  end
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.

Calls superclass method
printing_commands() Show source
# File railties/lib/rails/command/base.rb, line 90
def printing_commands
  namespaced_commands
end
usage_path() Show source
# File railties/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

Path to lookup a USAGE description in a file.

Public Instance Methods

help() Show source
# File railties/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
Calls superclass method

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.