Class: Rails::Command::Base
- Inherits:
-
Thor
- Object
- Thor
- Rails::Command::Base
- Includes:
- Actions
- Defined in:
- lib/rails/command/base.rb
Direct Known Subclasses
ApplicationCommand, ConsoleCommand, CredentialsCommand, Db::System::ChangeCommand, DbconsoleCommand, DestroyCommand, DevCommand, EncryptedCommand, GenerateCommand, HelpCommand, InitializersCommand, NewCommand, NotesCommand, PluginCommand, RakeCommand, RoutesCommand, RunnerCommand, SecretsCommand, ServerCommand, TestCommand, VersionCommand
Defined Under Namespace
Classes: CorrectableError, Error
Class Method Summary collapse
-
.banner ⇒ Object
Use Rails’ default banner.
-
.base_name ⇒ Object
Sets the base_name taking into account the current class namespace.
-
.command_name ⇒ Object
Return command name without namespaces.
-
.default_command_root ⇒ Object
Default file root to place extra files a command might need, placed one folder above the command file.
-
.desc(usage = nil, description = nil, options = {}) ⇒ Object
Tries to get the description from a USAGE file one folder above the command root.
-
.engine? ⇒ Boolean
Returns true when the app is a Rails engine.
- .executable ⇒ Object
-
.exit_on_failure? ⇒ Boolean
:nodoc:.
-
.hide_command! ⇒ Object
Convenience method to hide this command from the available ones when running rails command.
-
.inherited(base) ⇒ Object
:nodoc:.
-
.namespace(name = nil) ⇒ Object
Convenience method to get the namespace from the class name.
-
.perform(command, args, config) ⇒ Object
:nodoc:.
- .printing_commands ⇒ Object
-
.usage_path ⇒ Object
Path to lookup a USAGE description in a file.
Instance Method Summary collapse
Methods included from Actions
#load_generators, #load_tasks, #require_application!, #require_application_and_environment!, #require_environment!, #set_application_directory!
Class Method Details
.banner ⇒ Object
Use Rails’ default banner.
99 100 101 |
# File 'lib/rails/command/base.rb', line 99 def (*) "#{executable} #{arguments.map(&:usage).join(' ')} [options]".squish end |
.base_name ⇒ Object
Sets the base_name taking into account the current class namespace.
Rails::Command::TestCommand.base_name # => 'rails'
106 107 108 109 110 |
# File '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 ⇒ Object
Return command name without namespaces.
Rails::Command::TestCommand.command_name # => 'test'
115 116 117 118 119 120 |
# File '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 ⇒ Object
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
.
135 136 137 138 |
# File 'lib/rails/command/base.rb', line 135 def default_command_root path = File.(relative_command_path, __dir__) path if File.exist?(path) end |
.desc(usage = nil, description = nil, options = {}) ⇒ Object
Tries to get the description from a USAGE file one folder above the command root.
49 50 51 52 53 54 55 |
# File 'lib/rails/command/base.rb', line 49 def desc(usage = nil, description = nil, = {}) if usage super else @desc ||= ERB.new(File.read(usage_path), trim_mode: "-").result(binding) if usage_path end end |
.engine? ⇒ Boolean
Returns true when the app is a Rails engine.
43 44 45 |
# File 'lib/rails/command/base.rb', line 43 def engine? defined?(ENGINE_ROOT) end |
.executable ⇒ Object
94 95 96 |
# File 'lib/rails/command/base.rb', line 94 def executable "rails #{command_name}" end |
.exit_on_failure? ⇒ Boolean
:nodoc:
38 39 40 |
# File 'lib/rails/command/base.rb', line 38 def exit_on_failure? # :nodoc: false end |
.hide_command! ⇒ Object
Convenience method to hide this command from the available ones when running rails command.
70 71 72 |
# File 'lib/rails/command/base.rb', line 70 def hide_command! Rails::Command.hidden_commands << self end |
.inherited(base) ⇒ Object
:nodoc:
74 75 76 77 78 79 80 |
# File 'lib/rails/command/base.rb', line 74 def inherited(base) # :nodoc: super if base.name && !base.name.end_with?("Base") Rails::Command.subclasses << base end end |
.namespace(name = nil) ⇒ Object
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.
60 61 62 63 64 65 66 |
# File 'lib/rails/command/base.rb', line 60 def namespace(name = nil) if name super else @namespace ||= super.chomp("_command").sub(/:command:/, ":") end end |
.perform(command, args, config) ⇒ Object
:nodoc:
82 83 84 85 86 87 88 |
# File 'lib/rails/command/base.rb', line 82 def perform(command, args, config) # :nodoc: if Rails::Command::HELP_MAPPINGS.include?(args.first) command, args = "help", [] end dispatch(command, args.dup, nil, config) end |
.printing_commands ⇒ Object
90 91 92 |
# File 'lib/rails/command/base.rb', line 90 def printing_commands namespaced_commands end |
.usage_path ⇒ Object
Path to lookup a USAGE description in a file.
123 124 125 126 127 128 |
# File '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 |
Instance Method Details
#help ⇒ Object
174 175 176 177 178 179 180 |
# File '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 |