Class: TestProf::AnyFixture::Dump

Inherits:
Object
  • Object
show all
Defined in:
lib/test_prof/any_fixture/dump.rb,
lib/test_prof/any_fixture/dump/digest.rb,
lib/test_prof/any_fixture/dump/sqlite.rb,
lib/test_prof/any_fixture/dump/postgresql.rb,
lib/test_prof/any_fixture/dump/base_adapter.rb

Defined Under Namespace

Modules: Digest Classes: BaseAdapter, PostgreSQL, SQLite, Subscriber

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, watch: [], cache_key: nil) ⇒ Dump

Returns a new instance of Dump.



116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# File 'lib/test_prof/any_fixture/dump.rb', line 116

def initialize(name, watch: [], cache_key: nil)
  @name = name
  @digest = [
    Digest.call(*watch),
    cache_key.to_digest
  ].compact.join("-")

  @path = build_path(name, digest)

  @success = false

  @adapter =
    case ActiveRecord::Base.connection.adapter_name
    when /sqlite/i
      require "test_prof/any_fixture/dump/sqlite"
      SQLite.new
    when /postgresql/i
      require "test_prof/any_fixture/dump/postgresql"
      PostgreSQL.new
    else
      raise ArgumentError,
        "Your current database adapter (#{ActiveRecord::Base.connection.adapter_name}) " \
        "is currently not supported. So far, we only support SQLite and PostgreSQL"
    end

  @subscriber = Subscriber.new(path, adapter)
end

Instance Attribute Details

#digestObject (readonly)

Returns the value of attribute digest.



113
114
115
# File 'lib/test_prof/any_fixture/dump.rb', line 113

def digest
  @digest
end

#nameObject (readonly)

Returns the value of attribute name.



113
114
115
# File 'lib/test_prof/any_fixture/dump.rb', line 113

def name
  @name
end

#pathObject (readonly)

Returns the value of attribute path.



113
114
115
# File 'lib/test_prof/any_fixture/dump.rb', line 113

def path
  @path
end

#subscriberObject (readonly)

Returns the value of attribute subscriber.



113
114
115
# File 'lib/test_prof/any_fixture/dump.rb', line 113

def subscriber
  @subscriber
end

#successObject (readonly) Also known as: success?

Returns the value of attribute success.



113
114
115
# File 'lib/test_prof/any_fixture/dump.rb', line 113

def success
  @success
end

Instance Method Details

#commit!Object



158
159
160
# File 'lib/test_prof/any_fixture/dump.rb', line 158

def commit!
  subscriber.commit
end

#exists?Boolean

Returns:

  • (Boolean)


144
145
146
# File 'lib/test_prof/any_fixture/dump.rb', line 144

def exists?
  File.exist?(path)
end

#force?Boolean

Returns:

  • (Boolean)


148
149
150
# File 'lib/test_prof/any_fixture/dump.rb', line 148

def force?
  AnyFixture.config.force_matching_dumps.match?(name)
end

#loadObject



152
153
154
155
156
# File 'lib/test_prof/any_fixture/dump.rb', line 152

def load
  return import_via_active_record unless AnyFixture.config.import_dump_via_cli?

  adapter.import(path) || import_via_active_record
end

#within_prepared_env(before: nil, after: nil, import: false) ⇒ Object



162
163
164
165
166
167
168
169
# File 'lib/test_prof/any_fixture/dump.rb', line 162

def within_prepared_env(before: nil, after: nil, import: false)
  run_before_callbacks(callback: before, dump: self, import: false)
  yield.tap do
    @success = true
  end
ensure
  run_after_callbacks(callback: after, dump: self, import: false)
end