Module: FailFast::CheckActiveRecordDB

Defined in:
lib/fail_fast/extensions/check_active_record_db.rb

Instance Method Summary collapse

Instance Method Details

#has_active_record_db(*params) ⇒ Object

Ensure the ActiveRecord connection can be established :

Usage :

has_active_record_db :host => 'localhost', :adapter => 'sqlite3', :database=> 'prod_db'
has_active_record_db :host => 'localhost', :adapter => 'sqlite3', :database=> 'prod_db', :message => 'custom message'


12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/fail_fast/extensions/check_active_record_db.rb', line 12

def has_active_record_db(*params)
  options = params.last.is_a?(Hash) ? params.pop : {}
  begin
    ActiveRecord::Base.establish_connection(options)
    @connection = ActiveRecord::Base.connection
    @success    = @connection && @connection.active?
  rescue => e
    @success        = false
    @error_message  = e.message
  end
  unless @success
    add_error ErrorDetails.new(nil, :active_record_db_connection_error, @error_message, options[:message])
  end
end

#has_active_record_db_for(key, *params) ⇒ Object

Ensure the ActiveRecord connection can be established :

Usage :

has_active_record_db_for  'production/database'
has_active_record_db_for  'production/database', :message => 'custom message'


33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/fail_fast/extensions/check_active_record_db.rb', line 33

def has_active_record_db_for(key, *params)
  p = key_value_regexp_options(key, params)
  key, options = p.key, p.options
  return unless has_value_for key              , :message => options[:message]
  return unless has_value_for "#{key}/adapter" , :message => options[:message]
  return unless has_value_for "#{key}/database", :message => options[:message]

  begin
    connection_options = p.value
    ActiveRecord::Base.establish_connection(connection_options)
    @connection = ActiveRecord::Base.connection
    @success    = @connection && @connection.active?
  rescue => e
    @success        = false
    @error_message  = e.message
  end
  unless @success
    add_error ErrorDetails.new(key, :active_record_db_connection_error, @error_message, options[:message])
  end
end