Class: CodeKindly::Utils::ActiveRecord

Inherits:
Object
  • Object
show all
Includes:
Deprecation
Defined in:
lib/code_kindly/utils/active_record.rb

Constant Summary collapse

RAILS =
Kernel.const_defined?(:Rails) ? ::Rails : nil

Class Method Summary collapse

Class Method Details

.active_record_classes_by_connectionObject



13
14
15
16
17
18
# File 'lib/code_kindly/utils/active_record.rb', line 13

def active_record_classes_by_connection
  deprecate :active_record_classes_by_connection,
            :classes_by_connection,
            :'0.1.0'
  classes_by_connection
end

.classes_by_connectionObject



20
21
22
# File 'lib/code_kindly/utils/active_record.rb', line 20

def classes_by_connection
  @classes_by_connection ||= find_classes_by_connection
end

.clear_scope(scope) ⇒ Object



24
25
26
27
28
29
30
31
# File 'lib/code_kindly/utils/active_record.rb', line 24

def clear_scope(scope)
  if scope.count.zero?
    puts 'Nothing to clear'
    return
  end
  puts "Clearing #{scope.count} #{scope.name} records"
  scope.delete_all
end

.config(name = nil) ⇒ Object



33
34
35
# File 'lib/code_kindly/utils/active_record.rb', line 33

def config(name = nil)
  configs[name || default_name]
end

.configsObject

rubocop:disable Metrics/AbcSize, Metrics/MethodLength



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/code_kindly/utils/active_record.rb', line 37

def configs # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
  @configs ||= ::ActiveRecord::Base.configurations
  if @configs.class.name == 'ActiveRecord::DatabaseConfigurations' # rubocop:disable Style/ClassEqualityComparison
    @configs = @configs.configs_for.each_with_object({}) do |config, hash|
      hash[config.env_name] = config.config
    end
  end
  return @configs unless @configs == {}
  return @configs unless RAILS.respond_to?(:root)

  file = RAILS.root.join('config', 'database.yml')
  return @configs unless ::File.readable?(file)

  @configs = YAML.load(::File.read(file)) # rubocop:disable Security/YAMLLoad
end

.configurationsObject



53
54
55
56
# File 'lib/code_kindly/utils/active_record.rb', line 53

def configurations
  deprecate :configurations, :configs, :'0.1.0'
  configs
end

.default_connection_class(connection = nil) ⇒ Object



58
59
60
61
62
63
64
65
66
67
# File 'lib/code_kindly/utils/active_record.rb', line 58

def default_connection_class(connection = nil)
  connection ||= default_name
  @default_connection_class ||= {}.with_indifferent_access
  @default_connection_class[connection] ||= begin
    it = classes_by_connection.fetch(connection, []).first
    key = classes_by_connection.keys.first
    it ||= classes_by_connection.fetch(key).first
    it
  end
end