Class: ActiveRecord::Tasks::AbstractTasks
Do not use. This class is for internal use only.
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Subclasses:
|
|
Inherits: | Object |
Defined in: | activerecord/lib/active_record/tasks/abstract_tasks.rb |
Class Attribute Summary
Class Method Summary
- .new(db_config) ⇒ AbstractTasks constructor
Instance Attribute Summary
- #configuration_hash readonly private
- #db_config readonly private
Instance Method Summary
- #charset
- #check_current_protected_environment!(db_config, migration_class)
- #collation
- #configuration_hash_without_database private
- #connection private
- #establish_connection(config = db_config) private
- #run_cmd(cmd, *args, **opts) private
- #run_cmd_error(cmd, args) private
- #with_temporary_pool(db_config, migration_class, clobber: false) private
Constructor Details
.new(db_config) ⇒ AbstractTasks
# File 'activerecord/lib/active_record/tasks/abstract_tasks.rb', line 10
def initialize(db_config) @db_config = db_config @configuration_hash = db_config.configuration_hash end
Class Attribute Details
.using_database_configurations? ⇒ Boolean
(readonly)
[ GitHub ]
# File 'activerecord/lib/active_record/tasks/abstract_tasks.rb', line 6
def self.using_database_configurations? true end
Instance Attribute Details
#configuration_hash (readonly, private)
[ GitHub ]# File 'activerecord/lib/active_record/tasks/abstract_tasks.rb', line 41
attr_reader :db_config, :configuration_hash
#db_config (readonly, private)
[ GitHub ]# File 'activerecord/lib/active_record/tasks/abstract_tasks.rb', line 41
attr_reader :db_config, :configuration_hash
Instance Method Details
#charset
[ GitHub ]# File 'activerecord/lib/active_record/tasks/abstract_tasks.rb', line 15
def charset connection.encoding end
#check_current_protected_environment!(db_config, migration_class)
[ GitHub ]# File 'activerecord/lib/active_record/tasks/abstract_tasks.rb', line 23
def check_current_protected_environment!(db_config, migration_class) with_temporary_pool(db_config, migration_class) do |pool| migration_context = pool.migration_context current = migration_context.current_environment stored = migration_context.last_stored_environment if migration_context.protected_environment? raise ActiveRecord::ProtectedEnvironmentError.new(stored) end if stored && stored != current raise ActiveRecord::EnvironmentMismatchError.new(current: current, stored: stored) end rescue ActiveRecord::NoDatabaseError end end
#collation
[ GitHub ]# File 'activerecord/lib/active_record/tasks/abstract_tasks.rb', line 19
def collation connection.collation end
#configuration_hash_without_database (private)
[ GitHub ]# File 'activerecord/lib/active_record/tasks/abstract_tasks.rb', line 51
def configuration_hash_without_database configuration_hash.merge(database: nil) end
#connection (private)
[ GitHub ]# File 'activerecord/lib/active_record/tasks/abstract_tasks.rb', line 43
def connection ActiveRecord::Base.lease_connection end
#establish_connection(config = db_config) (private)
[ GitHub ]# File 'activerecord/lib/active_record/tasks/abstract_tasks.rb', line 47
def establish_connection(config = db_config) ActiveRecord::Base.establish_connection(config) end
#run_cmd(cmd, *args, **opts) (private)
[ GitHub ]# File 'activerecord/lib/active_record/tasks/abstract_tasks.rb', line 55
def run_cmd(cmd, *args, **opts) fail run_cmd_error(cmd, args) unless Kernel.system(cmd, *args, opts) end
#run_cmd_error(cmd, args) (private)
[ GitHub ]# File 'activerecord/lib/active_record/tasks/abstract_tasks.rb', line 59
def run_cmd_error(cmd, args) msg = +"failed to execute:\n" msg << "#{cmd} #{args.join(' ')}\n\n" msg << "Please check the output above for any errors and make sure that `#{cmd}` is installed in your PATH and has proper permissions.\n\n" msg end
#with_temporary_pool(db_config, migration_class, clobber: false) (private)
[ GitHub ]# File 'activerecord/lib/active_record/tasks/abstract_tasks.rb', line 66
def with_temporary_pool(db_config, migration_class, clobber: false) original_db_config = migration_class.connection_db_config pool = migration_class.connection_handler.establish_connection(db_config, clobber: clobber) yield pool ensure migration_class.connection_handler.establish_connection(original_db_config, clobber: clobber) end