sequel-activerecord_connection 1.3.1 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0e7023579a13396cf034b357786ebf56c98c15a09693ffe97900c86b221cc596
4
- data.tar.gz: ff4b9033f260499e70a7f82ee901a77a8e370b230e968072c04d9ae5d4226029
3
+ metadata.gz: f6e3934544ded0f6495b75e5a04a8a9adb1d98d9d6b5d76420c45b72c94a4898
4
+ data.tar.gz: 44fcd4c9c5b5c0f3c1fc9804b9ae3568aca9d7d2623fbb3e3181b52c1e2acc2a
5
5
  SHA512:
6
- metadata.gz: ac0955585457b396ffe074ddb6c040adba15b42052d1c1649635c85223b7cee86e11986b639cbe2a868048ab6926d410f5564210ef745101aa880d591242c57d
7
- data.tar.gz: 459fd7c8b13036b93afe8dfd9a63af1137997ad04fd8e340a9a218c31196ff319dc29861647bfffd9e9a338a21a3cacb88439d04e45fff09f5fa81765167025f
6
+ metadata.gz: 560c34801be1e01717c4d1939ab5745c473df770dbe0d6366ad6cf9f14fe2b7920ae0bd39c8b59b602a70b12a1bbeb3ef34522c02410ad7c6a1d8fb8139340dc
7
+ data.tar.gz: fe7b20203fafa3414360e5cee9aeb6994b0205838dc82abcc83c9a03b17a8e707c69c49c5f06c4ec6c4019216d80a1e6b0c0f843a935ef11c35601a323064146
data/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## 1.4.1 (2024-05-10)
2
+
3
+ * Fix `#rollback_checker`, `#rollback_on_exit` and `#after_rollback` not working reliably on JRuby and Sequel 5.78+ (@janko)
4
+
5
+ * Use native transaction callbacks on Active Record 7.2+ (@janko)
6
+
7
+ ## 1.4.0 (2024-03-19)
8
+
9
+ * Only warn when Sequel extension fails to initialize because there is no database (@janko)
10
+
11
+ * Drop support for Active Record 4.2 (@janko)
12
+
1
13
  ## 1.3.1 (2023-04-22)
2
14
 
3
15
  * Fix Active Record's query cache not being cleared in SQLite adapter (@janko)
data/README.md CHANGED
@@ -8,8 +8,8 @@ This can be useful if you want to use a library that uses Sequel (e.g.
8
8
  or if you just want to use Sequel for more complex queries, and you want to
9
9
  avoid creating new database connections.
10
10
 
11
- It works on ActiveRecord 4.2+ and fully supports PostgresSQL, MySQL and SQLite
12
- adapters, both native and JDBC (JRuby). The [SQL Server] external adapter is
11
+ It works on ActiveRecord 4.2+ and fully supports PostgresSQL, MySQL and SQLite,
12
+ both the native adapters and JDBC (JRuby). The [SQL Server] external adapter is
13
13
  supported as well (`tinytds` in Sequel), and there is attempted support for
14
14
  [Oracle enhanced] (`oracle` and in Sequel). Other adapters might work too, but
15
15
  their integration hasn't been tested.
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "after_commit_everywhere"
4
-
5
3
  module Sequel
6
4
  module ActiveRecordConnection
7
5
  Error = Class.new(Sequel::Error)
@@ -16,6 +14,7 @@ module Sequel
16
14
  def self.extended(db)
17
15
  db.activerecord_model = ActiveRecord::Base
18
16
  db.opts[:test] = false unless db.opts.key?(:test)
17
+ db.instance_variable_set(:@transactions, {}) if RUBY_ENGINE == "jruby"
19
18
 
20
19
  begin
21
20
  require "sequel/extensions/activerecord_connection/#{db.adapter_scheme}"
@@ -32,6 +31,12 @@ module Sequel
32
31
  raise Error, "creating a Sequel connection is not allowed"
33
32
  end
34
33
 
34
+ def extension(*)
35
+ super
36
+ rescue ActiveRecord::NoDatabaseError
37
+ warn "Sequel database extension #{@loaded_extensions.last.inspect} failed to initialize because there is no database."
38
+ end
39
+
35
40
  # Avoid calling Sequel's connection pool, instead use Active Record's.
36
41
  def synchronize(*)
37
42
  activerecord_lock do
@@ -43,6 +48,8 @@ module Sequel
43
48
 
44
49
  yield conn
45
50
  end
51
+ ensure
52
+ clear_activerecord_query_cache
46
53
  end
47
54
 
48
55
  # Log executed queries into Active Record logger as well.
@@ -57,17 +64,6 @@ module Sequel
57
64
  @timezone || activerecord_timezone
58
65
  end
59
66
 
60
- # Clear Active Record's query cache after potential data modifications.
61
- %i[execute_ddl execute_dui execute_insert execute].each do |execute_method|
62
- define_method(execute_method) do |*args, &block|
63
- begin
64
- super(*args, &block)
65
- ensure
66
- clear_activerecord_query_cache
67
- end
68
- end
69
- end
70
-
71
67
  private
72
68
 
73
69
  # Synchronizes transaction state with ActiveRecord. Sequel uses this
@@ -123,7 +119,7 @@ module Sequel
123
119
  # after_commit_everywhere gem.
124
120
  def add_transaction_hook(conn, type, block)
125
121
  if _trans(conn)[:activerecord]
126
- AfterCommitEverywhere.public_send(type, &block)
122
+ activerecord_transaction_callback(type, &block)
127
123
  else
128
124
  super
129
125
  end
@@ -135,12 +131,24 @@ module Sequel
135
131
  # after_commit_everywhere gem.
136
132
  def add_savepoint_hook(conn, type, block)
137
133
  if _trans(conn)[:savepoints].last[:activerecord]
138
- AfterCommitEverywhere.public_send(type, &block)
134
+ activerecord_transaction_callback(type, &block)
139
135
  else
140
136
  super
141
137
  end
142
138
  end
143
139
 
140
+ if ActiveRecord.version >= Gem::Version.new("7.2.0.alpha")
141
+ def activerecord_transaction_callback(type, &block)
142
+ activerecord_connection.current_transaction.public_send(type, &block)
143
+ end
144
+ else
145
+ require "after_commit_everywhere"
146
+
147
+ def activerecord_transaction_callback(type, &block)
148
+ AfterCommitEverywhere.public_send(type, &block)
149
+ end
150
+ end
151
+
144
152
  # Prevents sql_log_normalizer DB extension from skipping the normalization.
145
153
  def skip_logging?
146
154
  return false if @loaded_extensions.include?(:sql_log_normalizer)
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "sequel-activerecord_connection"
3
- spec.version = "1.3.1"
3
+ spec.version = "1.4.1"
4
4
  spec.authors = ["Janko Marohnić"]
5
5
  spec.email = ["janko.marohnic@gmail.com"]
6
6
 
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
12
12
  spec.required_ruby_version = ">= 2.4"
13
13
 
14
14
  spec.add_dependency "sequel", "~> 5.38"
15
- spec.add_dependency "activerecord", ">= 4.2", "< 8"
15
+ spec.add_dependency "activerecord", ">= 5.0", "< 8"
16
16
  spec.add_dependency "after_commit_everywhere", "~> 1.1"
17
17
 
18
18
  spec.add_development_dependency "sequel_pg" unless RUBY_ENGINE == "jruby"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequel-activerecord_connection
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Janko Marohnić
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-22 00:00:00.000000000 Z
11
+ date: 2024-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sequel
@@ -30,7 +30,7 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '4.2'
33
+ version: '5.0'
34
34
  - - "<"
35
35
  - !ruby/object:Gem::Version
36
36
  version: '8'
@@ -40,7 +40,7 @@ dependencies:
40
40
  requirements:
41
41
  - - ">="
42
42
  - !ruby/object:Gem::Version
43
- version: '4.2'
43
+ version: '5.0'
44
44
  - - "<"
45
45
  - !ruby/object:Gem::Version
46
46
  version: '8'
@@ -138,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
138
138
  - !ruby/object:Gem::Version
139
139
  version: '0'
140
140
  requirements: []
141
- rubygems_version: 3.4.12
141
+ rubygems_version: 3.5.9
142
142
  signing_key:
143
143
  specification_version: 4
144
144
  summary: Allows Sequel to use ActiveRecord connection for database interaction.