Module: Rails::Command
- Extended by:
- ActiveSupport::Autoload
- Includes:
- Behavior
- Defined in:
- lib/rails/command.rb,
lib/rails/command/base.rb,
lib/rails/command/actions.rb,
lib/rails/command/behavior.rb,
lib/rails/commands/new/new_command.rb,
lib/rails/commands/help/help_command.rb,
lib/rails/commands/rake/rake_command.rb,
lib/rails/commands/test/test_command.rb,
lib/rails/command/environment_argument.rb,
lib/rails/commands/plugin/plugin_command.rb,
lib/rails/commands/runner/runner_command.rb,
lib/rails/commands/server/server_command.rb,
lib/rails/commands/console/console_command.rb,
lib/rails/commands/destroy/destroy_command.rb,
lib/rails/commands/secrets/secrets_command.rb,
lib/rails/commands/version/version_command.rb,
lib/rails/commands/generate/generate_command.rb,
lib/rails/commands/dbconsole/dbconsole_command.rb,
lib/rails/commands/application/application_command.rb
Defined Under Namespace
Modules: Actions, Behavior, EnvironmentArgument Classes: ApplicationCommand, Base, ConsoleCommand, DbconsoleCommand, DestroyCommand, GenerateCommand, HelpCommand, NewCommand, PluginCommand, RakeCommand, RunnerCommand, SecretsCommand, ServerCommand, TestCommand, VersionCommand
Constant Summary collapse
- HELP_MAPPINGS =
%w(-h -? --help)
Class Method Summary collapse
-
.environment ⇒ Object
:nodoc:.
-
.find_by_namespace(namespace, command_name = nil) ⇒ Object
Rails finds namespaces similar to Thor, it only adds one rule:.
-
.hidden_commands ⇒ Object
:nodoc:.
-
.invoke(full_namespace, args = [], **config) ⇒ Object
Receives a namespace, arguments and the behavior to invoke the command.
-
.print_commands ⇒ Object
:nodoc:.
-
.root ⇒ Object
Returns the root of the Rails engine or app running the command.
-
.sorted_groups ⇒ Object
:nodoc:.
Class Method Details
.environment ⇒ Object
:nodoc:
25 26 27 |
# File 'lib/rails/command.rb', line 25 def environment # :nodoc: ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "development" end |
.find_by_namespace(namespace, command_name = nil) ⇒ Object
Rails finds namespaces similar to Thor, it only adds one rule:
Command names must end with “_command.rb”. This is required because Rails looks in load paths and loads the command just before it’s going to be used.
find_by_namespace :webrat, :rails, :integration
Will search for the following commands:
"rails:webrat", "webrat:integration", "webrat"
Notice that “rails:commands:webrat” could be loaded as well, what Rails looks for is the first and last parts of the namespace.
63 64 65 66 67 68 69 70 71 72 |
# File 'lib/rails/command.rb', line 63 def find_by_namespace(namespace, command_name = nil) # :nodoc: lookups = [ namespace ] lookups << "#{namespace}:#{command_name}" if command_name lookups.concat lookups.map { |lookup| "rails:#{lookup}" } lookup(lookups) namespaces = subclasses.index_by(&:namespace) namespaces[(lookups & namespaces.keys).first] end |
.hidden_commands ⇒ Object
:nodoc:
21 22 23 |
# File 'lib/rails/command.rb', line 21 def hidden_commands # :nodoc: @hidden_commands ||= [] end |
.invoke(full_namespace, args = [], **config) ⇒ Object
Receives a namespace, arguments and the behavior to invoke the command.
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/rails/command.rb', line 30 def invoke(full_namespace, args = [], **config) namespace = full_namespace = full_namespace.to_s if char = namespace =~ /:(\w+)$/ command_name, namespace = $1, namespace.slice(0, char) else command_name = namespace end command_name, namespace = "help", "help" if command_name.blank? || HELP_MAPPINGS.include?(command_name) command_name, namespace = "version", "version" if %w( -v --version ).include?(command_name) command = find_by_namespace(namespace, command_name) if command && command.all_commands[command_name] command.perform(command_name, args, config) else find_by_namespace("rake").perform(full_namespace, args, config) end end |
.print_commands ⇒ Object
:nodoc:
83 84 85 |
# File 'lib/rails/command.rb', line 83 def print_commands # :nodoc: sorted_groups.each { |b, n| print_list(b, n) } end |
.root ⇒ Object
Returns the root of the Rails engine or app running the command.
75 76 77 78 79 80 81 |
# File 'lib/rails/command.rb', line 75 def root if defined?(ENGINE_ROOT) Pathname.new(ENGINE_ROOT) elsif defined?(APP_PATH) Pathname.new(File.("../..", APP_PATH)) end end |
.sorted_groups ⇒ Object
:nodoc:
87 88 89 90 91 92 93 94 95 |
# File 'lib/rails/command.rb', line 87 def sorted_groups # :nodoc: lookup! groups = (subclasses - hidden_commands).group_by { |c| c.namespace.split(":").first } groups.transform_values! { |commands| commands.flat_map(&:printing_commands).sort } rails = groups.delete("rails") [[ "rails", rails ]] + groups.sort.to_a end |