transaction_isolation 1.0.3 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 490188a65b8c7c813af7d49c2c08857de92b8b43ad96c7447d44fc3461cf47f2
4
+ data.tar.gz: 914759a4c9c907acc153604fe16914578126dd69d7e9561695132e398ae820b0
5
+ SHA512:
6
+ metadata.gz: d76fb1ad1dc822e9ff9630d507a9782efa03314804ad0385325c10fbe35d332b3d2cd80702ca83ecc3914a37a96e441495e80cbdb50f68986e8d26da1fdca984
7
+ data.tar.gz: b68c311d6f3d4ee712ed076eedd483d1a54d912029a5c9912b3fc815f1d235ffdad6967b9fa12a3fda04371d11637daf7af8430e632f42a72d352c90baad569b
data/Gemfile CHANGED
@@ -5,7 +5,7 @@ gemspec
5
5
 
6
6
  group :test do
7
7
  # Use the gem instead of a dated version bundled with Ruby
8
- gem 'minitest', '2.8.1'
8
+ gem 'minitest', '5.3.4'
9
9
 
10
10
  gem 'simplecov', :require => false
11
11
 
data/README.md CHANGED
@@ -4,6 +4,9 @@ Set transaction isolation level in the ActiveRecord in a database agnostic way.
4
4
  Works with MySQL, PostgreSQL and SQLite as long as you are using new adapters mysql2, pg or sqlite3.
5
5
  Supports all ANSI SQL isolation levels: :serializable, :repeatable_read, :read_committed, :read_uncommitted.
6
6
 
7
+ See also [transaction_retry](https://github.com/qertoip/transaction_retry) gem for auto-retrying transactions
8
+ on deadlocks and serialization errors.
9
+
7
10
  ## Example
8
11
 
9
12
  ActiveRecord::Base.isolation_level( :serializable ) do
@@ -68,7 +71,7 @@ The highest level of transaction isolation is called "serializable" and that's w
68
71
  end
69
72
  end
70
73
  end
71
- rescue ActiveRecord::TransactionConflictError => e
74
+ rescue ActiveRecord::TransactionIsolationConflict => e
72
75
  logger.warn( e.message )
73
76
  retry
74
77
  end
@@ -54,7 +54,7 @@ if defined?( ActiveRecord::ConnectionAdapters::Mysql2Adapter )
54
54
 
55
55
  def translate_exception_with_transaction_isolation_conflict( exception, message )
56
56
  if isolation_conflict?( exception )
57
- ::ActiveRecord::TransactionIsolationConflict.new( "Transaction isolation conflict detected: #{exception.message}", exception )
57
+ ::ActiveRecord::TransactionIsolationConflict.new( "Transaction isolation conflict detected: #{exception.message}" )
58
58
  else
59
59
  translate_exception_without_transaction_isolation_conflict( exception, message )
60
60
  end
@@ -54,7 +54,7 @@ if defined?( ActiveRecord::ConnectionAdapters::PostgreSQLAdapter )
54
54
 
55
55
  def translate_exception_with_transaction_isolation_conflict( exception, message )
56
56
  if isolation_conflict?( exception )
57
- ::ActiveRecord::TransactionIsolationConflict.new( "Transaction isolation conflict detected: #{exception.message}", exception )
57
+ ::ActiveRecord::TransactionIsolationConflict.new( "Transaction isolation conflict detected: #{exception.message}" )
58
58
  else
59
59
  translate_exception_without_transaction_isolation_conflict( exception, message )
60
60
  end
@@ -1,4 +1,4 @@
1
- if defined?( ActiveRecord::ConnectionAdapters::SQLiteAdapter )
1
+ if defined?( ActiveRecord::ConnectionAdapters::SQLite3Adapter )
2
2
 
3
3
  module TransactionIsolation
4
4
  module ActiveRecord
@@ -52,7 +52,7 @@ if defined?( ActiveRecord::ConnectionAdapters::SQLiteAdapter )
52
52
 
53
53
  def translate_exception_with_transaction_isolation_conflict( exception, message )
54
54
  if isolation_conflict?( exception )
55
- ::ActiveRecord::TransactionIsolationConflict.new( "Transaction isolation conflict detected: #{exception.message}", exception )
55
+ ::ActiveRecord::TransactionIsolationConflict.new( "Transaction isolation conflict detected: #{exception.message}" )
56
56
  else
57
57
  translate_exception_without_transaction_isolation_conflict( exception, message )
58
58
  end
@@ -73,4 +73,4 @@ if defined?( ActiveRecord::ConnectionAdapters::SQLiteAdapter )
73
73
 
74
74
  ActiveRecord::ConnectionAdapters::SQLite3Adapter.send( :include, TransactionIsolation::ActiveRecord::ConnectionAdapters::SQLite3Adapter )
75
75
 
76
- end
76
+ end
@@ -1,3 +1,3 @@
1
1
  module TransactionIsolation
2
- VERSION = "1.0.3"
2
+ VERSION = "1.0.5"
3
3
  end
@@ -2,11 +2,11 @@
2
2
 
3
3
  require 'test_helper'
4
4
 
5
- class ActiveRecordTest < MiniTest::Unit::TestCase
5
+ class ActiveRecordTest < Minitest::Test
6
6
 
7
- class BaseTest < MiniTest::Unit::TestCase
7
+ class BaseTest < Minitest::Test
8
8
 
9
- class IsolationLevelTest < MiniTest::Unit::TestCase
9
+ class IsolationLevelTest < Minitest::Test
10
10
 
11
11
  def test_wraps_connection_isolation_level
12
12
  ActiveRecord::Base.isolation_level( :serializable ) do
@@ -2,13 +2,13 @@
2
2
 
3
3
  require 'test_helper'
4
4
 
5
- class ActiveRecordTest < MiniTest::Unit::TestCase
5
+ class ActiveRecordTest < Minitest::Test
6
6
 
7
- class ConnectionAdaptersTest < MiniTest::Unit::TestCase
7
+ class ConnectionAdaptersTest < Minitest::Test
8
8
 
9
- class AnyAdapterTest < MiniTest::Unit::TestCase
9
+ class AnyAdapterTest < Minitest::Test
10
10
 
11
- class CurrentIsolationLevelTest < MiniTest::Unit::TestCase
11
+ class CurrentIsolationLevelTest < Minitest::Test
12
12
 
13
13
  def test_returns_correct_default_isolation_level
14
14
  if defined?( ActiveRecord::ConnectionAdapters::Mysql2Adapter )
@@ -2,13 +2,13 @@
2
2
 
3
3
  require 'test_helper'
4
4
 
5
- class ActiveRecordTest < MiniTest::Unit::TestCase
5
+ class ActiveRecordTest < Minitest::Test
6
6
 
7
- class ConnectionAdaptersTest < MiniTest::Unit::TestCase
7
+ class ConnectionAdaptersTest < Minitest::Test
8
8
 
9
- class AnyAdapterTest < MiniTest::Unit::TestCase
9
+ class AnyAdapterTest < Minitest::Test
10
10
 
11
- class CurrentVendorIsolationLevelTest < MiniTest::Unit::TestCase
11
+ class CurrentVendorIsolationLevelTest < Minitest::Test
12
12
 
13
13
  def test_returns_correct_default_vendor_isolation_level
14
14
  if defined?( ActiveRecord::ConnectionAdapters::Mysql2Adapter )
@@ -2,13 +2,13 @@
2
2
 
3
3
  require 'test_helper'
4
4
 
5
- class ActiveRecordTest < MiniTest::Unit::TestCase
5
+ class ActiveRecordTest < Minitest::Test
6
6
 
7
- class ConnectionAdaptersTest < MiniTest::Unit::TestCase
7
+ class ConnectionAdaptersTest < Minitest::Test
8
8
 
9
- class AnyAdapterTest < MiniTest::Unit::TestCase
9
+ class AnyAdapterTest < Minitest::Test
10
10
 
11
- class IsolationLevelTest < MiniTest::Unit::TestCase
11
+ class IsolationLevelTest < Minitest::Test
12
12
 
13
13
  def test_without_a_block
14
14
  original_isolation_level = ActiveRecord::Base.connection.current_isolation_level
@@ -2,13 +2,13 @@
2
2
 
3
3
  require 'test_helper'
4
4
 
5
- class ActiveRecordTest < MiniTest::Unit::TestCase
5
+ class ActiveRecordTest < Minitest::Test
6
6
 
7
- class ConnectionAdaptersTest < MiniTest::Unit::TestCase
7
+ class ConnectionAdaptersTest < Minitest::Test
8
8
 
9
- class AnyAdapterTest < MiniTest::Unit::TestCase
9
+ class AnyAdapterTest < Minitest::Test
10
10
 
11
- class SupportsIsolationLevelsTest < MiniTest::Unit::TestCase
11
+ class SupportsIsolationLevelsTest < Minitest::Test
12
12
 
13
13
  def test_returns_true
14
14
  assert( ActiveRecord::Base.connection.supports_isolation_levels? )
@@ -2,13 +2,13 @@
2
2
 
3
3
  require 'test_helper'
4
4
 
5
- class ActiveRecordTest < MiniTest::Unit::TestCase
5
+ class ActiveRecordTest < Minitest::Test
6
6
 
7
- class ConnectionAdaptersTest < MiniTest::Unit::TestCase
7
+ class ConnectionAdaptersTest < Minitest::Test
8
8
 
9
- class AnyAdapterTest < MiniTest::Unit::TestCase
9
+ class AnyAdapterTest < Minitest::Test
10
10
 
11
- class TranslateExceptionTest < MiniTest::Unit::TestCase
11
+ class TranslateExceptionTest < Minitest::Test
12
12
 
13
13
  def test_does_not_break_existing_translation
14
14
  assert_raises( ActiveRecord::StatementInvalid ) do
@@ -11,7 +11,7 @@ case ENV['db']
11
11
  when 'sqlite3'
12
12
  TransactionIsolation::Test::Db.connect_to_sqlite3
13
13
  else
14
- TransactionIsolation::Test::Db.connect_to_mysql2
14
+ TransactionIsolation::Test::Db.connect_to_sqlite3
15
15
  end
16
16
 
17
17
  TransactionIsolation::Test::Migrations.run!
metadata CHANGED
@@ -1,42 +1,40 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: transaction_isolation
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
5
- prerelease:
4
+ version: 1.0.5
6
5
  platform: ruby
7
6
  authors:
8
7
  - Piotr 'Qertoip' Włodarek
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-02-08 00:00:00.000000000 Z
11
+ date: 2018-06-18 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activerecord
16
- requirement: &16306400 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: 3.0.11
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *16306400
25
- description: ! 'Set transaction isolation level in the ActiveRecord in a database
26
- agnostic way.
27
-
28
- Works with MySQL, PostgreSQL and SQLite as long as you are using new adapters mysql2,
29
- pg or sqlite3.
30
-
31
- Supports all ANSI SQL isolation levels: :serializable, :repeatable_read, :read_committed,
32
- :read_uncommitted.'
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 3.0.11
27
+ description: |-
28
+ Set transaction isolation level in the ActiveRecord in a database agnostic way.
29
+ Works with MySQL, PostgreSQL and SQLite as long as you are using new adapters mysql2, pg or sqlite3.
30
+ Supports all ANSI SQL isolation levels: :serializable, :repeatable_read, :read_committed, :read_uncommitted.
33
31
  email:
34
32
  - qertoip@gmail.com
35
33
  executables: []
36
34
  extensions: []
37
35
  extra_rdoc_files: []
38
36
  files:
39
- - .gitignore
37
+ - ".gitignore"
40
38
  - Gemfile
41
39
  - LICENSE
42
40
  - README.md
@@ -69,27 +67,41 @@ files:
69
67
  - transaction_isolation.gemspec
70
68
  homepage: https://github.com/qertoip/transaction_isolation
71
69
  licenses: []
70
+ metadata: {}
72
71
  post_install_message:
73
72
  rdoc_options: []
74
73
  require_paths:
75
74
  - lib
76
75
  required_ruby_version: !ruby/object:Gem::Requirement
77
- none: false
78
76
  requirements:
79
- - - ! '>='
77
+ - - ">="
80
78
  - !ruby/object:Gem::Version
81
79
  version: 1.9.2
82
80
  required_rubygems_version: !ruby/object:Gem::Requirement
83
- none: false
84
81
  requirements:
85
- - - ! '>='
82
+ - - ">="
86
83
  - !ruby/object:Gem::Version
87
84
  version: '0'
88
85
  requirements: []
89
86
  rubyforge_project:
90
- rubygems_version: 1.8.15
87
+ rubygems_version: 2.7.6
91
88
  signing_key:
92
- specification_version: 3
89
+ specification_version: 4
93
90
  summary: Set transaction isolation level in the ActiveRecord in a database agnostic
94
91
  way.
95
- test_files: []
92
+ test_files:
93
+ - test/db/all.rb
94
+ - test/db/db.rb
95
+ - test/db/migrations.rb
96
+ - test/db/queued_job.rb
97
+ - test/integration/active_record/base/isolation_level_test.rb
98
+ - test/integration/active_record/connection_adapters/any_adapter/current_isolation_level_test.rb
99
+ - test/integration/active_record/connection_adapters/any_adapter/current_vendor_isolation_level_test.rb
100
+ - test/integration/active_record/connection_adapters/any_adapter/isolation_level_test.rb
101
+ - test/integration/active_record/connection_adapters/any_adapter/supports_isolation_levels_test.rb
102
+ - test/integration/active_record/connection_adapters/any_adapter/translate_exception_test.rb
103
+ - test/library_setup.rb
104
+ - test/log/.gitkeep
105
+ - test/test_console.rb
106
+ - test/test_helper.rb
107
+ - test/test_runner.rb