janus-ar 0.15.3 → 7.2.0

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: ba9bd0a8c688fa7d38fb9af101c5f47d3aeab3894499c55759c40190c8e56b6d
4
- data.tar.gz: fe843929d1d953d249a5e36cda2779b0b9c72f2ad89da0eb0877f7db38f1c74e
3
+ metadata.gz: d9a0e04cbb2ece10c1a3fec2d0c1036788eaa290e36f5af3ea78812e8de6ac6c
4
+ data.tar.gz: 4cdf47f493d980f0c90b2bdb1d45468163cc58bf7d88c60956dc12e62dd2983d
5
5
  SHA512:
6
- metadata.gz: 6f0de25c9fded2476a892bdb48d5aa40a522fc523374b4de651eebc188263b60d11175ceb66f0f49178c9815b34a03e99fcd7953a3618c9fb8ec38037a127a7a
7
- data.tar.gz: 3c883d4c3b81a36696f844e45c583e7d575dc02c8bc3b1b1df30c916cd0420d8e8880f4089d09316f241bdb0c859cf472eb38a7e68e6de45fdebf12fd916ce6e
6
+ metadata.gz: 1cc3b11d2a1f77ffd74c13fb61d9a6b012fa95375c030f93317be8a02052cc899c3750dbda3273efc4344e9bfc259c22d385842d9ad829ebde770ec3c911d969
7
+ data.tar.gz: 2abaface3c1b02a535a3b467b047ed03ab67ee5b57396363253fa975ab89b39cffaf0386b08968b9001f86623779b92ef31189cd91598242a31934ae1b71e8d9
data/.rubocop.yml CHANGED
@@ -1,22 +1,26 @@
1
- inherit_from:
2
- - https://tech.olioex.com/.support/rubocop-styling-v1.0
3
-
4
- require:
5
- - rubocop-rails
6
-
7
- Style/Documentation:
8
- Enabled: false
9
-
10
- Rails/Delegate:
11
- Enabled: false
12
-
13
- Metrics/BlockLength:
14
- Exclude:
15
- - spec/**/*
16
-
17
- Style/GlobalVars:
18
- Exclude:
19
- - 'spec/**/*'
20
-
21
- Metrics/AbcSize:
22
- Max: 25
1
+ inherit_from:
2
+ - https://tech.olioex.com/.support/rubocop-styling-v1.0
3
+
4
+ require:
5
+ - rubocop-rails
6
+
7
+ Style/Documentation:
8
+ Enabled: false
9
+
10
+ Rails/Delegate:
11
+ Enabled: false
12
+
13
+ Metrics/BlockLength:
14
+ Exclude:
15
+ - spec/**/*
16
+
17
+ Style/GlobalVars:
18
+ Exclude:
19
+ - 'spec/**/*'
20
+
21
+ Naming/FileName:
22
+ Exclude:
23
+ - lib/janus-ar.rb
24
+
25
+ Metrics/AbcSize:
26
+ Max: 25
data/Gemfile.lock CHANGED
@@ -1,33 +1,34 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- janus-ar (0.15.2)
5
- activerecord (>= 7.1.0, < 7.2)
4
+ janus-ar (7.2.0)
5
+ activerecord (~> 7.2)
6
6
 
7
7
  GEM
8
8
  remote: http://rubygems.org/
9
9
  specs:
10
- activemodel (7.1.3.4)
11
- activesupport (= 7.1.3.4)
12
- activerecord (7.1.3.4)
13
- activemodel (= 7.1.3.4)
14
- activesupport (= 7.1.3.4)
10
+ activemodel (7.2.1)
11
+ activesupport (= 7.2.1)
12
+ activerecord (7.2.1)
13
+ activemodel (= 7.2.1)
14
+ activesupport (= 7.2.1)
15
15
  timeout (>= 0.4.0)
16
- activesupport (7.1.3.4)
16
+ activesupport (7.2.1)
17
17
  base64
18
18
  bigdecimal
19
- concurrent-ruby (~> 1.0, >= 1.0.2)
19
+ concurrent-ruby (~> 1.0, >= 1.3.1)
20
20
  connection_pool (>= 2.2.5)
21
21
  drb
22
22
  i18n (>= 1.6, < 2)
23
+ logger (>= 1.4.2)
23
24
  minitest (>= 5.1)
24
- mutex_m
25
- tzinfo (~> 2.0)
25
+ securerandom (>= 0.3)
26
+ tzinfo (~> 2.0, >= 2.0.5)
26
27
  ast (2.4.2)
27
28
  base64 (0.2.0)
28
29
  bigdecimal (3.1.8)
29
30
  coderay (1.1.3)
30
- concurrent-ruby (1.3.3)
31
+ concurrent-ruby (1.3.4)
31
32
  connection_pool (2.4.1)
32
33
  diff-lcs (1.5.1)
33
34
  drb (2.2.1)
@@ -35,9 +36,9 @@ GEM
35
36
  concurrent-ruby (~> 1.0)
36
37
  json (2.7.2)
37
38
  language_server-protocol (3.17.0.3)
39
+ logger (1.6.0)
38
40
  method_source (1.0.0)
39
- minitest (5.24.1)
40
- mutex_m (0.2.0)
41
+ minitest (5.25.1)
41
42
  mysql2 (0.5.6)
42
43
  parallel (1.26.3)
43
44
  parser (3.3.4.2)
@@ -47,12 +48,11 @@ GEM
47
48
  coderay (~> 1.1)
48
49
  method_source (~> 1.0)
49
50
  racc (1.8.1)
50
- rack (3.1.5)
51
- strscan
51
+ rack (3.1.7)
52
52
  rainbow (3.1.1)
53
53
  rake (13.2.1)
54
54
  regexp_parser (2.9.2)
55
- rexml (3.3.5)
55
+ rexml (3.3.6)
56
56
  strscan
57
57
  rspec (3.13.0)
58
58
  rspec-core (~> 3.13.0)
@@ -83,16 +83,17 @@ GEM
83
83
  rubocop-performance (1.21.1)
84
84
  rubocop (>= 1.48.1, < 2.0)
85
85
  rubocop-ast (>= 1.31.1, < 2.0)
86
- rubocop-rails (2.25.1)
86
+ rubocop-rails (2.26.0)
87
87
  activesupport (>= 4.2.0)
88
88
  rack (>= 1.1)
89
- rubocop (>= 1.33.0, < 2.0)
89
+ rubocop (>= 1.52.0, < 2.0)
90
90
  rubocop-ast (>= 1.31.1, < 2.0)
91
91
  rubocop-rspec (3.0.4)
92
92
  rubocop (~> 1.61)
93
93
  rubocop-thread_safety (0.5.1)
94
94
  rubocop (>= 0.90.0)
95
95
  ruby-progressbar (1.13.0)
96
+ securerandom (0.3.1)
96
97
  strscan (3.1.0)
97
98
  timeout (0.4.1)
98
99
  trilogy (2.8.1)
@@ -105,7 +106,7 @@ PLATFORMS
105
106
  x86_64-linux
106
107
 
107
108
  DEPENDENCIES
108
- activesupport (>= 7.1.0, < 7.2)
109
+ activesupport (>= 7.2.0)
109
110
  janus-ar!
110
111
  mysql2
111
112
  pry
@@ -113,7 +114,7 @@ DEPENDENCIES
113
114
  rspec (~> 3)
114
115
  rubocop (~> 1.65.0)
115
116
  rubocop-performance
116
- rubocop-rails (~> 2.25.0)
117
+ rubocop-rails (~> 2.26.0)
117
118
  rubocop-rspec
118
119
  rubocop-thread_safety
119
120
  trilogy
data/README.md CHANGED
@@ -35,6 +35,22 @@ This project assumes that your read/write endpoints are handled by a separate sy
35
35
 
36
36
  After a write request during a thread the adapter will continue using the `primary` server, unless the context is specifically released.
37
37
 
38
+ ## Rails 7.2+
39
+
40
+ For Rails 7.2 you'll need to manually register the database adaptor in `config/application.rb` after requiring rails but before entering the application configuration, e.g.
41
+
42
+ ```ruby
43
+ require 'rails/all'
44
+
45
+ ActiveRecord::ConnectionAdapters.register("janus_trilogy", "ActiveRecord::ConnectionAdapters::JanusTrilogyAdapter", 'janus-ar/active_record/connection_adapters/janus_trilogy_adapter')
46
+ # ...or...
47
+ ActiveRecord::ConnectionAdapters.register("janus_mysql2", "ActiveRecord::ConnectionAdapters::JanusMysql2Adapter", 'janus-ar/active_record/connection_adapters/janus_mysql2_adapter')
48
+ ```
49
+
50
+ ## Rails <= 7.1
51
+
52
+ ActiveRecord 7.1 was tested up to releases v0.15.*. After this release we only tested Rails 7.2+. This does not mean it is not compatible, just not tested.
53
+
38
54
  ### Configuration
39
55
 
40
56
  Update your **database.yml** as follows:
@@ -104,6 +120,9 @@ There are some edge cases:
104
120
  * Calls inside a transaction will always be sent to the primary (otherwise changes from within the transaction could not be read back on most transaction isolation levels)
105
121
  * Locking reads (e.g. `SELECT ... FOR UPDATE`) will always be sent to the primary
106
122
 
123
+ # Notes
124
+
125
+ Janus does not support Rails' read/write split or sharding using `with_connection`.
107
126
 
108
127
  # Acknowlegements
109
128
 
data/Rakefile CHANGED
@@ -1,3 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
- require 'bundler/gem_tasks'
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
data/janus-ar.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require File.expand_path('lib/janus/version.rb', __dir__)
3
+ require File.expand_path('lib/janus-ar/version.rb', __dir__)
4
4
 
5
5
  Gem::Specification.new do |gem|
6
6
  gem.authors = ['Lloyd Watkin']
@@ -21,15 +21,15 @@ Gem::Specification.new do |gem|
21
21
 
22
22
  gem.required_ruby_version = '>= 3.2.0'
23
23
 
24
- gem.add_dependency 'activerecord', '>= 7.1.0', '< 7.2'
25
- gem.add_development_dependency 'activesupport', '>= 7.1.0', '< 7.2'
24
+ gem.add_dependency 'activerecord', '~> 7.2'
25
+ gem.add_development_dependency 'activesupport', '>= 7.2.0'
26
26
  gem.add_development_dependency 'mysql2'
27
27
  gem.add_development_dependency 'trilogy'
28
28
  gem.add_development_dependency 'pry'
29
29
  gem.add_development_dependency 'rake'
30
30
  gem.add_development_dependency 'rspec', '~> 3'
31
31
  gem.add_development_dependency 'rubocop', '~> 1.65.0'
32
- gem.add_development_dependency 'rubocop-rails', '~> 2.25.0'
32
+ gem.add_development_dependency 'rubocop-rails', '~> 2.26.0'
33
33
  gem.add_development_dependency 'rubocop-rspec'
34
34
  gem.add_development_dependency 'rubocop-thread_safety'
35
35
  gem.add_development_dependency 'rubocop-performance'
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'active_record/connection_adapters/abstract_adapter'
4
4
  require 'active_record/connection_adapters/mysql2_adapter'
5
- require_relative '../../janus'
5
+ require_relative '../../../janus-ar'
6
6
 
7
7
  module ActiveRecord
8
8
  module ConnectionHandling
@@ -47,6 +47,10 @@ module ActiveRecord
47
47
  update_config
48
48
  end
49
49
 
50
+ def with_connection(_args = {})
51
+ self
52
+ end
53
+
50
54
  def raw_execute(sql, name, async: false, allow_retry: false, materialize_transactions: true)
51
55
  case where_to_send?(sql)
52
56
  when :all
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'active_record/connection_adapters/abstract_adapter'
4
4
  require 'active_record/connection_adapters/trilogy_adapter'
5
- require_relative '../../janus'
5
+ require_relative '../../../janus-ar'
6
6
 
7
7
  module ActiveRecord
8
8
  module ConnectionHandling
@@ -89,6 +89,10 @@ module ActiveRecord
89
89
  end
90
90
  end
91
91
 
92
+ def with_connection(_args = {})
93
+ self
94
+ end
95
+
92
96
  def connect!(...)
93
97
  replica_connection.connect!(...)
94
98
  super
@@ -3,9 +3,9 @@
3
3
  module Janus
4
4
  unless defined?(::Janus::VERSION)
5
5
  module VERSION
6
- MAJOR = 0
7
- MINOR = 15
8
- PATCH = 3
6
+ MAJOR = 7
7
+ MINOR = 2
8
+ PATCH = 0
9
9
  PRE = nil
10
10
 
11
11
  def self.to_s
data/lib/janus-ar.rb ADDED
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support'
4
+
5
+ module Janus
6
+ autoload :Context, 'janus-ar/context'
7
+ autoload :Client, 'janus-ar/client'
8
+ autoload :QueryDirector, 'janus-ar/query_director'
9
+ autoload :VERSION, 'janus-ar/version'
10
+ autoload :DbConsoleConfig, 'janus-ar/db_console_config'
11
+
12
+ module Logging
13
+ autoload :Subscriber, 'janus-ar/logging/subscriber'
14
+ autoload :Logger, 'janus-ar/logging/logger'
15
+ end
16
+ end
17
+
18
+ ActiveSupport.on_load(:active_record) do
19
+ ActiveRecord::LogSubscriber.log_subscribers.each do |subscriber|
20
+ subscriber.extend Janus::Logging::Subscriber
21
+ end
22
+ end
@@ -14,6 +14,7 @@ RSpec.describe ActiveRecord::ConnectionAdapters::JanusTrilogyAdapter do
14
14
  'ssl' => true,
15
15
  'ssl_mode' => 'REQUIRED',
16
16
  'tls_min_version' => Trilogy::TLS_VERSION_12,
17
+ 'found_rows' => true,
17
18
  }
18
19
  end
19
20
  let(:replica_config) do
@@ -25,6 +26,7 @@ RSpec.describe ActiveRecord::ConnectionAdapters::JanusTrilogyAdapter do
25
26
  'ssl' => true,
26
27
  'ssl_mode' => 'REQUIRED',
27
28
  'tls_min_version' => Trilogy::TLS_VERSION_12,
29
+ 'found_rows' => true,
28
30
  }
29
31
  end
30
32
  let(:config) do
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'janus/client'
3
+ require 'janus-ar/client'
4
4
 
5
5
  RSpec.describe Janus::Client do
6
6
  it { expect(described_class::FOUND_ROWS).to eq 2 }
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'janus/context'
3
+ require 'janus-ar/context'
4
4
 
5
5
  RSpec.describe Janus::Context do
6
6
  describe '#initialize' do
data/spec/spec_helper.rb CHANGED
@@ -4,9 +4,12 @@ require 'pry'
4
4
 
5
5
  require 'active_record'
6
6
 
7
- require './lib/janus'
8
- require './lib/active_record/connection_adapters/janus_mysql2_adapter'
9
- require './lib/active_record/connection_adapters/janus_trilogy_adapter'
7
+ require './lib/janus-ar'
8
+ require './lib/janus-ar/active_record/connection_adapters/janus_mysql2_adapter'
9
+ require './lib/janus-ar/active_record/connection_adapters/janus_trilogy_adapter'
10
+
11
+ ActiveRecord::ConnectionAdapters.register("janus_trilogy", "ActiveRecord::ConnectionAdapters::JanusTrilogyAdapter")
12
+ ActiveRecord::ConnectionAdapters.register("janus_mysql2", "ActiveRecord::ConnectionAdapters::JanusMysql2Adapter")
10
13
 
11
14
  require './spec/shared_examples/a_mysql_like_server.rb'
12
15
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: janus-ar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.3
4
+ version: 7.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lloyd Watkin
@@ -14,20 +14,14 @@ dependencies:
14
14
  name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 7.1.0
20
- - - "<"
17
+ - - "~>"
21
18
  - !ruby/object:Gem::Version
22
19
  version: '7.2'
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: 7.1.0
30
- - - "<"
24
+ - - "~>"
31
25
  - !ruby/object:Gem::Version
32
26
  version: '7.2'
33
27
  - !ruby/object:Gem::Dependency
@@ -36,20 +30,14 @@ dependencies:
36
30
  requirements:
37
31
  - - ">="
38
32
  - !ruby/object:Gem::Version
39
- version: 7.1.0
40
- - - "<"
41
- - !ruby/object:Gem::Version
42
- version: '7.2'
33
+ version: 7.2.0
43
34
  type: :development
44
35
  prerelease: false
45
36
  version_requirements: !ruby/object:Gem::Requirement
46
37
  requirements:
47
38
  - - ">="
48
39
  - !ruby/object:Gem::Version
49
- version: 7.1.0
50
- - - "<"
51
- - !ruby/object:Gem::Version
52
- version: '7.2'
40
+ version: 7.2.0
53
41
  - !ruby/object:Gem::Dependency
54
42
  name: mysql2
55
43
  requirement: !ruby/object:Gem::Requirement
@@ -140,14 +128,14 @@ dependencies:
140
128
  requirements:
141
129
  - - "~>"
142
130
  - !ruby/object:Gem::Version
143
- version: 2.25.0
131
+ version: 2.26.0
144
132
  type: :development
145
133
  prerelease: false
146
134
  version_requirements: !ruby/object:Gem::Requirement
147
135
  requirements:
148
136
  - - "~>"
149
137
  - !ruby/object:Gem::Version
150
- version: 2.25.0
138
+ version: 2.26.0
151
139
  - !ruby/object:Gem::Dependency
152
140
  name: rubocop-rspec
153
141
  requirement: !ruby/object:Gem::Requirement
@@ -215,22 +203,22 @@ files:
215
203
  - assets/janus-logo.png
216
204
  - bin/release.sh
217
205
  - janus-ar.gemspec
218
- - lib/active_record/connection_adapters/janus_mysql2_adapter.rb
219
- - lib/active_record/connection_adapters/janus_trilogy_adapter.rb
220
- - lib/janus.rb
221
- - lib/janus/client.rb
222
- - lib/janus/context.rb
223
- - lib/janus/db_console_config.rb
224
- - lib/janus/logging/logger.rb
225
- - lib/janus/logging/subscriber.rb
226
- - lib/janus/query_director.rb
227
- - lib/janus/version.rb
228
- - spec/lib/active_record/connection_adapters/janus_mysql_adapter_spec.rb
229
- - spec/lib/active_record/connection_adapters/janus_trilogy_adapter_spec.rb
230
- - spec/lib/janus/client_spec.rb
231
- - spec/lib/janus/context_spec.rb
232
- - spec/lib/janus/logging/logger_spec.rb
233
- - spec/lib/janus/query_director_spec.rb
206
+ - lib/janus-ar.rb
207
+ - lib/janus-ar/active_record/connection_adapters/janus_mysql2_adapter.rb
208
+ - lib/janus-ar/active_record/connection_adapters/janus_trilogy_adapter.rb
209
+ - lib/janus-ar/client.rb
210
+ - lib/janus-ar/context.rb
211
+ - lib/janus-ar/db_console_config.rb
212
+ - lib/janus-ar/logging/logger.rb
213
+ - lib/janus-ar/logging/subscriber.rb
214
+ - lib/janus-ar/query_director.rb
215
+ - lib/janus-ar/version.rb
216
+ - spec/lib/janus-ar/active_record/connection_adapters/janus_mysql_adapter_spec.rb
217
+ - spec/lib/janus-ar/active_record/connection_adapters/janus_trilogy_adapter_spec.rb
218
+ - spec/lib/janus-ar/client_spec.rb
219
+ - spec/lib/janus-ar/context_spec.rb
220
+ - spec/lib/janus-ar/logging/logger_spec.rb
221
+ - spec/lib/janus-ar/query_director_spec.rb
234
222
  - spec/shared_examples/a_mysql_like_server.rb
235
223
  - spec/spec_helper.rb
236
224
  homepage: https://github.com/olioex/janus-ar
data/lib/janus.rb DELETED
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'active_support'
4
-
5
- module Janus
6
- autoload :Context, 'janus/context'
7
- autoload :Client, 'janus/client'
8
- autoload :QueryDirector, 'janus/query_director'
9
- autoload :VERSION, 'janus/version'
10
- autoload :DbConsoleConfig, 'janus/db_console_config'
11
-
12
- module Logging
13
- autoload :Subscriber, 'janus/logging/subscriber'
14
- autoload :Logger, 'janus/logging/logger'
15
- end
16
- end
17
-
18
- ActiveSupport.on_load(:active_record) do
19
- ActiveRecord::LogSubscriber.log_subscribers.each do |subscriber|
20
- subscriber.extend Janus::Logging::Subscriber
21
- end
22
- end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes