database_rewinder 0.7.0 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a320ff26da5261aed00fc4f589dfd7dd5abe1b1c
4
- data.tar.gz: c9eb8839e2e6e55f4aa29b25cce186d87c85f9b0
3
+ metadata.gz: 1db1d33a8c34c0c729cda2c399f9572fa9517154
4
+ data.tar.gz: 95bc85096e0150ef5260931297b9461b0a9e65f2
5
5
  SHA512:
6
- metadata.gz: 6c4e5a25f62290d2d81371992dcb24a9ce53618aad34e6422de624d3546b66a147d51d99773bab834fe1f0fa8aa97f622e3246147b4cba920069dc1bce8eb2ed
7
- data.tar.gz: b593b6f822542fd18404308b5bbaac2489063b2038b5f43d039298b81be7451fbf654663bfe32d1721a226fd606b6e4851b4b6298e429053fe4f36941513cc3e
6
+ metadata.gz: db16fa1ceed189ce34db7f1c54a335014635614069d04d66e44836a18275e68d325de537d4205c86bf24dc1620b3764f5b21b14f49f9f614894781d83ba8d9b5
7
+ data.tar.gz: ba26cdae5c9433f37726c95e4d103e534f767ad3ce257f4752094716adb843171c7a803ae8f922ed1ddd2c0a0387a1de0ecb30699d68823b42f6473874fb6d5f
@@ -5,7 +5,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "database_rewinder"
8
- spec.version = '0.7.0'
8
+ spec.version = '0.7.1'
9
9
  spec.authors = ["Akira Matsuda"]
10
10
  spec.email = ["ronnie@dio.jp"]
11
11
  spec.description = "A minimalist's tiny and ultra-fast database cleaner"
@@ -49,10 +49,10 @@ module DatabaseRewinder
49
49
  tables -= @except if @except.any?
50
50
  return if tables.empty?
51
51
 
52
- ar_conn.disable_referential_integrity do
53
- if ar_conn.supports_multiple_statements?
54
- ar_conn.execute_multiple tables.map {|t| "DELETE FROM #{ar_conn.quote_table_name(t)}"}.join(';')
55
- else
52
+ if tables.many? && ar_conn.supports_multiple_statements?
53
+ ar_conn.execute_multiple tables.map {|t| "DELETE FROM #{ar_conn.quote_table_name(t)}"}.join(';')
54
+ else
55
+ ar_conn.disable_referential_integrity do
56
56
  tables.each do |table_name|
57
57
  ar_conn.execute "DELETE FROM #{ar_conn.quote_table_name(table_name)};"
58
58
  end
@@ -11,33 +11,37 @@ module DatabaseRewinder
11
11
  #TODO Use ADAPTER_NAME when we've dropped AR 4.1 support
12
12
  case self.class.name
13
13
  when 'ActiveRecord::ConnectionAdapters::PostgreSQLAdapter'
14
- log(sql) { @connection.exec sql }
14
+ disable_referential_integrity { log(sql) { @connection.exec sql } }
15
15
  when 'ActiveRecord::ConnectionAdapters::Mysql2Adapter'
16
16
  query_options = @connection.query_options.dup
17
17
  if query_options[:connect_flags] & Mysql2::Client::MULTI_STATEMENTS != 0
18
- result = log(sql) { @connection.query sql }
19
- while @connection.next_result
20
- # just to make sure that all queries are finished
21
- result = @connection.store_result
18
+ disable_referential_integrity do
19
+ _result = log(sql) { @connection.query sql }
20
+ while @connection.next_result
21
+ # just to make sure that all queries are finished
22
+ _result = @connection.store_result
23
+ end
22
24
  end
23
25
  else
24
26
  query_options[:connect_flags] |= Mysql2::Client::MULTI_STATEMENTS
25
27
  # opens another connection to the DB
26
28
  client = Mysql2::Client.new query_options
27
29
  begin
28
- result = log(sql) { client.query sql }
30
+ # disable_referential_integrity
31
+ client.query("SET FOREIGN_KEY_CHECKS = 0")
32
+ _result = log(sql) { client.query sql }
29
33
  while client.next_result
30
34
  # just to make sure that all queries are finished
31
- result = client.store_result
35
+ _result = client.store_result
32
36
  end
33
37
  ensure
34
38
  client.close
35
39
  end
36
40
  end
37
41
  when 'ActiveRecord::ConnectionAdapters::SQLite3Adapter'
38
- log(sql) { @connection.execute_batch sql }
42
+ disable_referential_integrity { log(sql) { @connection.execute_batch sql } }
39
43
  else
40
- execute sql
44
+ raise 'Multiple deletion is not supported with the current database adapter.'
41
45
  end
42
46
  end
43
47
  end
@@ -113,8 +113,8 @@ class DatabaseRewinder::DatabaseRewinderTest < ActiveSupport::TestCase
113
113
  end
114
114
 
115
115
  test '.clean' do
116
- Foo.create! name: 'foo1'
117
- Bar.create! name: 'bar1'
116
+ bar = Bar.create! name: 'bar1'
117
+ Foo.create! name: 'foo1', bar_id: bar.id
118
118
  DatabaseRewinder.clean
119
119
 
120
120
  assert_equal 0, Foo.count
@@ -32,8 +32,8 @@ end
32
32
  class CreateAllTables < ActiveRecord::Migration
33
33
  def self.up
34
34
  ActiveRecord::Base.establish_connection ENV['DB'].to_sym
35
- create_table(:foos) {|t| t.string :name }
36
35
  create_table(:bars) {|t| t.string :name }
36
+ create_table(:foos) {|t| t.string :name; t.references :bar, foreign_key: true }
37
37
  create_table(:bazs) {|t| t.string :name }
38
38
 
39
39
  test2_connection = ActiveRecord::Base.establish_connection("#{ENV['DB']}_2".to_sym).connection
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: database_rewinder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Akira Matsuda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-11 00:00:00.000000000 Z
11
+ date: 2016-11-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -160,7 +160,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
160
160
  version: '0'
161
161
  requirements: []
162
162
  rubyforge_project:
163
- rubygems_version: 2.5.1
163
+ rubygems_version: 2.4.5.1
164
164
  signing_key:
165
165
  specification_version: 4
166
166
  summary: A minimalist's tiny and ultra-fast database cleaner