123456789_123456789_123456789_123456789_123456789_

Class: Rails::DBConsole

Relationships & Source Files
Inherits: Object
Defined in: railties/lib/rails/commands/dbconsole/dbconsole_command.rb

Class Method Summary

Instance Method Summary

Constructor Details

.new(options = {}) ⇒ DBConsole

[ GitHub ]

  
# File 'railties/lib/rails/commands/dbconsole/dbconsole_command.rb', line 12

def initialize(options = {})
  @options = options
  @options[:environment] ||= Rails::Command.environment
end

Class Method Details

.start(*args)

[ GitHub ]

  
# File 'railties/lib/rails/commands/dbconsole/dbconsole_command.rb', line 8

def self.start(*args)
  new(*args).start
end

Instance Method Details

#adapter_class (private)

[ GitHub ]

  
# File 'railties/lib/rails/commands/dbconsole/dbconsole_command.rb', line 52

def adapter_class
  if ActiveRecord::Base.respond_to?(db_config.adapter_class_method)
    ActiveRecord::Base.public_send(db_config.adapter_class_method)
  else
    ActiveRecord::ConnectionAdapters::AbstractAdapter
  end
end

#configurations (private)

[ GitHub ]

  
# File 'railties/lib/rails/commands/dbconsole/dbconsole_command.rb', line 60

def configurations # :doc:
  require APP_PATH
  ActiveRecord::Base.configurations = Rails.application.config.database_configuration
  ActiveRecord::Base.configurations
end

#database

[ GitHub ]

  
# File 'railties/lib/rails/commands/dbconsole/dbconsole_command.rb', line 43

def database
  @options[:database]
end

#db_config

[ GitHub ]

  
# File 'railties/lib/rails/commands/dbconsole/dbconsole_command.rb', line 23

def db_config
  return @db_config if defined?(@db_config)

  # If the user provided a database, use that. Otherwise find
  # the first config in the database.yml
  if database
    @db_config = configurations.configs_for(env_name: environment, name: database, include_hidden: true)
  else
    @db_config = configurations.find_db_config(environment)
  end

  unless @db_config
    missing_db = database ? "'#{database}' database is not" : "No databases are"
    raise ActiveRecord::AdapterNotSpecified,
      "#{missing_db} configured for '#{environment}'. Available configuration: #{configurations.inspect}"
  end

  @db_config
end

#environment

[ GitHub ]

  
# File 'railties/lib/rails/commands/dbconsole/dbconsole_command.rb', line 47

def environment
  @options[:environment]
end

#find_cmd_and_exec(commands, *args) (private)

[ GitHub ]

  
# File 'railties/lib/rails/commands/dbconsole/dbconsole_command.rb', line 66

def find_cmd_and_exec(commands, *args) # :doc:
  Rails.deprecator.warn(<<~MSG.squish)
    Rails::DBConsole#find_cmd_and_exec is deprecated and will be removed in Rails 7.2.
    Please use find_cmd_and_exec on the connection adapter class instead.
  MSG
  ActiveRecord::Base.connection.find_cmd_and_exec(commands, *args)
end

#start

[ GitHub ]

  
# File 'railties/lib/rails/commands/dbconsole/dbconsole_command.rb', line 17

def start
  adapter_class.dbconsole(db_config, @options)
rescue NotImplementedError
  abort "Unknown command-line client for #{db_config.database}."
end