octoshark 0.5.0 → 0.6.0

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
  SHA256:
3
- metadata.gz: '08a9bf2ed4d65fbb159fc533e06faf1fee9bdc6b756d9ea291f1918240bddfab'
4
- data.tar.gz: 7e8c1cd5604b308ce09c6b3227832eb42fc24b26591acf8a177817b679d98dc4
3
+ metadata.gz: 2de2a405dc31b45333b03a5786a6ea1139902a5da197675f56d5b6a645c2eae3
4
+ data.tar.gz: 68c38806668ee3fc1573b19ad08f6e6b66736d3632134ab773a1cb08548798f6
5
5
  SHA512:
6
- metadata.gz: 721103095d5700ead78726a57a3e233212b523a80db732f5616b1151e61071f566a877fe30784ba4a6ab1b25b70b0041f6adc6136b5fed8185836e1f24b8af18
7
- data.tar.gz: b8b939dd94e1bb789715501fbcf6502718cc029088f0915b157a0402efddcc0a3282a7da35a2d9d3f8dbb766300afb8633103564d3ef167c1101495369c0e8fb
6
+ metadata.gz: 1d15cbe8c2d345705284575ff7caa6082139c5274432b9a293035932788a3f156aa2002435dcb04f614ab7fd51a9ee5d0d85af5b04e5ff59f66eb74c4cf1a763
7
+ data.tar.gz: 2d971f5101357f0bf0dbba1efa1203f811b7707ab655d18ecef4999d726b943893e35132aa151ec6ec655d918284385facd0125a51cf5f5cb6d62def0804e19e
@@ -13,7 +13,7 @@ jobs:
13
13
  runs-on: ubuntu-latest
14
14
  services:
15
15
  mysql:
16
- image: mysql:5.7
16
+ image: mysql:8.0
17
17
  env:
18
18
  MYSQL_ROOT_PASSWORD: pass
19
19
  ports:
@@ -28,31 +28,35 @@ jobs:
28
28
  strategy:
29
29
  matrix:
30
30
  include:
31
- - gemfile: rails5.0
32
- ruby: 2.6
33
31
  - gemfile: rails5.1
34
- ruby: 2.6
32
+ ruby: 3.1
33
+ - gemfile: rails5.1
34
+ ruby: 3.2
35
+
35
36
  - gemfile: rails5.2
36
- ruby: 2.6
37
+ ruby: 3.1
37
38
  - gemfile: rails5.2
38
- ruby: 3.0
39
+ ruby: 3.2
39
40
 
40
41
  - gemfile: rails6.0
41
- ruby: 2.7
42
+ ruby: 3.1
43
+ - gemfile: rails6.0
44
+ ruby: 3.2
45
+
42
46
  - gemfile: rails6.1
43
- ruby: 2.7
47
+ ruby: 3.2
44
48
  - gemfile: rails6.1
45
- ruby: 3.0
49
+ ruby: 3.3
46
50
 
47
51
  - gemfile: rails7.0
48
- ruby: 3.0
52
+ ruby: 3.2
49
53
  - gemfile: rails7.0
50
- ruby: 3.1
54
+ ruby: 3.3
51
55
 
52
- - gemfile: rails7.1
53
- ruby: 3.1
54
56
  - gemfile: rails7.1
55
57
  ruby: 3.2
58
+ - gemfile: rails7.1
59
+ ruby: 3.3
56
60
 
57
61
  env:
58
62
  BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.2.2
1
+ 3.3.4
data/Appraisals CHANGED
@@ -1,23 +1,37 @@
1
1
  appraise "rails5.1" do
2
2
  gem "activerecord", "~> 5.1.0"
3
+ gem "mysql2", "~> 0.5.2"
4
+ gem "sqlite3", "~> 1.7.3"
3
5
  end
4
6
 
5
7
  appraise "rails5.2" do
6
8
  gem "activerecord", "~> 5.2.0"
9
+ gem "mysql2", "~> 0.5.2"
10
+ gem "sqlite3", "~> 1.7.3"
7
11
  end
8
12
 
9
13
  appraise "rails6.0" do
10
14
  gem "activerecord", "~> 6.0.0"
15
+ gem "mysql2", "~> 0.5.2"
16
+ gem "sqlite3", "~> 1.7.3"
11
17
  end
12
18
 
13
19
  appraise "rails6.1" do
14
20
  gem "activerecord", "~> 6.1.0"
21
+ gem "mysql2", "~> 0.5.2"
22
+ gem "sqlite3", "~> 1.7.3"
15
23
  end
16
24
 
17
25
  appraise "rails7.0" do
18
26
  gem "activerecord", "~> 7.0.0"
27
+ gem "mysql2", "~> 0.5.2"
28
+ gem "sqlite3", "~> 1.7.3"
19
29
  end
20
30
 
21
31
  appraise "rails7.1" do
22
32
  gem "activerecord", "~> 7.1.0"
23
33
  end
34
+
35
+ appraise "rails7.2" do
36
+ gem "activerecord", "~> 7.2.0"
37
+ end
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Change log
2
2
 
3
+ ## 0.6.0 2024-09-04
4
+
5
+ - Add support for Rails 7.2
6
+
7
+ ## 0.5.1 2024-04-22
8
+
9
+ - Add kwargs argument to the ActiveRecordAbstractAdapter
10
+
3
11
  ## 0.5.0 2023-10-27
4
12
 
5
13
  - Add support for Rails 7.1
data/Gemfile CHANGED
@@ -1,5 +1,4 @@
1
1
  source 'https://rubygems.org'
2
- gem "activerecord", "~> 7.1.0"
3
2
 
4
3
  # Specify your gem's dependencies in octoshark.gemspec
5
4
  gemspec
data/README.md CHANGED
@@ -54,7 +54,6 @@ config = {
54
54
  password: 'pass',
55
55
  pool: 1,
56
56
  encoding: 'utf8',
57
- reconnect: false
58
57
  }
59
58
  ```
60
59
 
@@ -110,21 +109,23 @@ To tell an ActiveRecord model to use the Octoshark connection we can override th
110
109
 
111
110
  ```ruby
112
111
  class Post < ActiveRecord::Base
113
- def self.connection
114
- CONN_MANAGER.current_connection
115
- end
116
- end
117
- ```
112
+ class << self
113
+ def connection
114
+ CONN_MANAGER.current_connection
115
+ end
118
116
 
119
- Alternatively, we can extract it as a module and include in multiple models.
117
+ # For Rails 7.2+ we need to override the following methods too:
120
118
 
121
- ```ruby
122
- module ShardingModel
123
- extend ActiveSupport::Concern
119
+ def lease_connection
120
+ connection
121
+ end
124
122
 
125
- module ClassMethods
126
- def connection
127
- CONN_MANAGER.current_connection
123
+ def with_connection
124
+ yield connection
125
+ end
126
+
127
+ def schema_cache
128
+ connection.schema_cache
128
129
  end
129
130
  end
130
131
  end
@@ -3,5 +3,7 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "activerecord", "~> 5.1.0"
6
+ gem "mysql2", "~> 0.5.2"
7
+ gem "sqlite3", "~> 1.7.3"
6
8
 
7
9
  gemspec path: "../"
@@ -3,5 +3,7 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "activerecord", "~> 5.2.0"
6
+ gem "mysql2", "~> 0.5.2"
7
+ gem "sqlite3", "~> 1.7.3"
6
8
 
7
9
  gemspec path: "../"
@@ -3,5 +3,7 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "activerecord", "~> 6.0.0"
6
+ gem "mysql2", "~> 0.5.2"
7
+ gem "sqlite3", "~> 1.7.3"
6
8
 
7
9
  gemspec path: "../"
@@ -3,5 +3,7 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "activerecord", "~> 6.1.0"
6
+ gem "mysql2", "~> 0.5.2"
7
+ gem "sqlite3", "~> 1.7.3"
6
8
 
7
9
  gemspec path: "../"
@@ -3,5 +3,7 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "activerecord", "~> 7.0.0"
6
+ gem "mysql2", "~> 0.5.2"
7
+ gem "sqlite3", "~> 1.7.3"
6
8
 
7
9
  gemspec path: "../"
@@ -2,8 +2,6 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "activerecord", "~> 5.0.0"
6
- gem "mysql2", "~> 0.5.2"
7
- gem "sqlite3", "~> 1.3.13"
5
+ gem "activerecord", "~> 7.2.0"
8
6
 
9
7
  gemspec path: "../"
@@ -26,12 +26,24 @@ module Octoshark
26
26
  module ActiveRecordAbstractAdapter
27
27
  attr_accessor :connection_name, :database_name
28
28
 
29
- def log(sql, name = "SQL", *other_args, &block)
29
+ def log(sql, name = "SQL", *other_args, **kwargs, &block)
30
30
  if connection_name || database_name
31
31
  name = "[Octoshark: #{[connection_name, database_name].compact.join(' ')}] #{name}"
32
32
  end
33
33
 
34
- super(sql, name, *other_args, &block)
34
+ super(sql, name, *other_args, **kwargs, &block)
35
+ end
36
+ end
37
+
38
+ module ConnectionPool
39
+ # Handle Rails 8.0 ConnectionPool#connection deprecation
40
+ def connection
41
+ if respond_to?(:lease_connection)
42
+ # Rails 7.2+
43
+ lease_connection
44
+ else
45
+ super
46
+ end
35
47
  end
36
48
  end
37
49
  end
@@ -43,3 +55,4 @@ end
43
55
 
44
56
  ActiveRecord::ConnectionAdapters::ConnectionHandler.send(:prepend, Octoshark::ConnectionHandler)
45
57
  ActiveRecord::ConnectionAdapters::AbstractAdapter.send(:prepend, Octoshark::ActiveRecordAbstractAdapter)
58
+ ActiveRecord::ConnectionAdapters::ConnectionPool.send(:prepend, Octoshark::ConnectionPool)
@@ -3,9 +3,15 @@ module Octoshark
3
3
  include CurrentConnection
4
4
 
5
5
  def with_connection(config, connection_name: nil, &block)
6
- connection_method = "#{config[:adapter]}_connection"
6
+ connection =
7
+ if ActiveRecord::ConnectionAdapters.respond_to?(:resolve)
8
+ # Rails 7.2+
9
+ ActiveRecord::ConnectionAdapters.resolve(config[:adapter]).new(config)
10
+ else
11
+ connection_method = "#{config[:adapter]}_connection"
12
+ ActiveRecord::Base.send(connection_method, config)
13
+ end
7
14
 
8
- connection = ActiveRecord::Base.send(connection_method, config)
9
15
  connection.connection_name = connection_name
10
16
  connection.database_name = config[:database] if config[:database]
11
17
 
@@ -1,3 +1,3 @@
1
1
  module Octoshark
2
- VERSION = "0.5.0"
2
+ VERSION = "0.6.0"
3
3
  end
data/octoshark.gemspec CHANGED
@@ -21,8 +21,9 @@ Gem::Specification.new do |spec|
21
21
  spec.add_runtime_dependency "activerecord", ">= 3.0"
22
22
 
23
23
  spec.add_development_dependency "rake"
24
- spec.add_development_dependency "rspec", "~> 3.12.0"
25
- spec.add_development_dependency "sqlite3", "~> 1.4.1"
26
- spec.add_development_dependency "mysql2", "~> 0.5.2"
24
+ spec.add_development_dependency "rspec"
25
+ spec.add_development_dependency "activerecord", "~> 7.2.0"
26
+ spec.add_development_dependency "sqlite3"
27
+ spec.add_development_dependency "mysql2"
27
28
  spec.add_development_dependency "appraisal"
28
29
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: octoshark
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dalibor Nasevic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-27 00:00:00.000000000 Z
11
+ date: 2024-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -40,46 +40,60 @@ dependencies:
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: activerecord
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: 3.12.0
61
+ version: 7.2.0
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: 3.12.0
68
+ version: 7.2.0
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: sqlite3
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - "~>"
73
+ - - ">="
60
74
  - !ruby/object:Gem::Version
61
- version: 1.4.1
75
+ version: '0'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - "~>"
80
+ - - ">="
67
81
  - !ruby/object:Gem::Version
68
- version: 1.4.1
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: mysql2
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - "~>"
87
+ - - ">="
74
88
  - !ruby/object:Gem::Version
75
- version: 0.5.2
89
+ version: '0'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - "~>"
94
+ - - ">="
81
95
  - !ruby/object:Gem::Version
82
- version: 0.5.2
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: appraisal
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -111,13 +125,13 @@ files:
111
125
  - LICENSE.txt
112
126
  - README.md
113
127
  - Rakefile
114
- - gemfiles/rails5.0.gemfile
115
128
  - gemfiles/rails5.1.gemfile
116
129
  - gemfiles/rails5.2.gemfile
117
130
  - gemfiles/rails6.0.gemfile
118
131
  - gemfiles/rails6.1.gemfile
119
132
  - gemfiles/rails7.0.gemfile
120
133
  - gemfiles/rails7.1.gemfile
134
+ - gemfiles/rails7.2.gemfile
121
135
  - lib/octoshark.rb
122
136
  - lib/octoshark/active_record_extensions.rb
123
137
  - lib/octoshark/connection_manager.rb
@@ -153,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
153
167
  - !ruby/object:Gem::Version
154
168
  version: '0'
155
169
  requirements: []
156
- rubygems_version: 3.4.10
170
+ rubygems_version: 3.5.11
157
171
  signing_key:
158
172
  specification_version: 4
159
173
  summary: Octoshark is an ActiveRecord connection switcher