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/command/spellchecker.rb,
lib/rails/command/helpers/editor.rb,
lib/rails/commands/dev/dev_command.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/notes/notes_command.rb,
lib/rails/commands/plugin/plugin_command.rb,
lib/rails/commands/routes/routes_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/encrypted/encrypted_command.rb,
lib/rails/commands/application/application_command.rb,
lib/rails/commands/credentials/credentials_command.rb,
lib/rails/commands/db/system/change/change_command.rb,
lib/rails/commands/initializers/initializers_command.rb
Defined Under Namespace
Modules: Actions, Behavior, Db, EnvironmentArgument, Helpers, Spellchecker Classes: ApplicationCommand, Base, ConsoleCommand, CredentialsCommand, DbconsoleCommand, DestroyCommand, DevCommand, EncryptedCommand, GenerateCommand, HelpCommand, InitializersCommand, NewCommand, NotesCommand, PluginCommand, RakeCommand, RoutesCommand, 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.
Class Method Details
.environment ⇒ Object
:nodoc:
26 27 28 |
# File 'lib/rails/command.rb', line 26 def environment # :nodoc: ENV["RAILS_ENV"].presence || ENV["RACK_ENV"].presence || "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.
69 70 71 72 73 74 75 76 77 78 |
# File 'lib/rails/command.rb', line 69 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:
22 23 24 |
# File 'lib/rails/command.rb', line 22 def hidden_commands # :nodoc: @hidden_commands ||= [] end |
.invoke(full_namespace, args = [], **config) ⇒ Object
Receives a namespace, arguments and the behavior to invoke the command.
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/rails/command.rb', line 31 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) original_argv = ARGV.dup ARGV.replace(args) 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 ensure ARGV.replace(original_argv) end |
.print_commands ⇒ Object
:nodoc:
89 90 91 |
# File 'lib/rails/command.rb', line 89 def print_commands # :nodoc: commands.each { |command| puts(" #{command}") } end |