Module: Ardb

Defined in:
lib/ardb/test_helpers.rb,
lib/ardb.rb,
lib/ardb/cli.rb,
lib/ardb/version.rb,
lib/ardb/db_tests.rb,
lib/ardb/cli/clirb.rb,
lib/ardb/migration.rb,
lib/ardb/record_spy.rb,
lib/ardb/adapter_spy.rb,
lib/ardb/adapter/base.rb,
lib/ardb/cli/commands.rb,
lib/ardb/relation_spy.rb,
lib/ardb/use_db_default.rb,
lib/ardb/default_order_by.rb

Overview

Use theses helpers in your test suite. They all generally assume Ardb has already been initialized by calling ‘Ardb.init`.

Defined Under Namespace

Modules: Adapter, DefaultOrderBy, RecordSpy, TestHelpers, UseDbDefault Classes: AdapterSpy, CLI, Config, DbTests, Migration, NotInitializedError, RelationSpy

Constant Summary collapse

InvalidDBFileError =
Class.new(ArgumentError)
ConfigurationError =
Class.new(ArgumentError)
InvalidAdapterError =
Class.new(RuntimeError)
VERSION =
"0.30.0"

Class Method Summary collapse

Class Method Details

.adapterObject



19
20
21
# File 'lib/ardb.rb', line 19

def self.adapter
  @adapter || raise(NotInitializedError.new(caller))
end

.configObject



11
12
13
# File 'lib/ardb.rb', line 11

def self.config
  @config ||= Config.new
end

.configure(&block) ⇒ Object



15
16
17
# File 'lib/ardb.rb', line 15

def self.configure(&block)
  config.tap(&block)
end

.escape_like_pattern(pattern, escape_char = nil) ⇒ Object



49
50
51
52
53
54
# File 'lib/ardb.rb', line 49

def self.escape_like_pattern(pattern, escape_char = nil)
  adapter.escape_like_pattern(pattern, escape_char)
rescue NotInitializedError => ex
  ex.set_backtrace(caller)
  raise ex
end

.init(establish_connection = true) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/ardb.rb', line 27

def self.init(establish_connection = true)
  require "ardb/require_autoloaded_active_record_files"
  begin
    require_db_file
  rescue InvalidDBFileError => ex
    ex.set_backtrace(caller)
    raise ex
  end

  config.validate!
  @adapter = Adapter.new(config)

  # setup AR
  if ActiveRecord.respond_to?(:default_timezone=)
    ActiveRecord.default_timezone = config.default_timezone
  else
    ActiveRecord::Base.default_timezone = config.default_timezone
  end
  ActiveRecord::Base.logger = config.logger
  adapter.connect_db if establish_connection
end

.require_db_fileObject

try requiring the db file via the load path or as an absolute path, if that fails it tries requiring relative to the current working directory



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/ardb.rb', line 58

def self.require_db_file
  begin
    begin
      require ENV["ARDB_DB_FILE"]
    rescue LoadError
      require File.expand_path(ENV["ARDB_DB_FILE"], ENV["PWD"])
    end
  rescue LoadError
    raise(
      InvalidDBFileError,
      "can't require `#{ENV["ARDB_DB_FILE"]}`, check that the ARDB_DB_FILE "\
      "env var is set to the file path of your db file",
    )
  end
end

.reset_adapterObject



23
24
25
# File 'lib/ardb.rb', line 23

def self.reset_adapter
  @adapter = nil
end