octoshark 0.1.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,74 @@
1
+ require 'spec_helper'
2
+
3
+ describe "connection manager" do
4
+ let(:config) { configs[:db1] }
5
+
6
+ describe "#identifier" do
7
+ it "has unique identifiers" do
8
+ manager1 = Octoshark::ConnectionManager.new
9
+ manager2 = Octoshark::ConnectionManager.new
10
+ expect(manager1.identifier).to_not eq(manager2.identifier)
11
+ end
12
+ end
13
+
14
+ describe "#current_connection" do
15
+ it "returns last used connection as current one" do
16
+ manager = Octoshark::ConnectionManager.new
17
+ manager.with_connection(config) do |connection|
18
+ expect(manager.current_connection).to eq(connection)
19
+ end
20
+ end
21
+
22
+ it "raises error when no current connection" do
23
+ manager = Octoshark::ConnectionManager.new
24
+
25
+ expect { manager.current_connection }.to raise_error(Octoshark::Error::NoCurrentConnection)
26
+ end
27
+ end
28
+
29
+ describe "#current_connection?" do
30
+ it "returns true if current one" do
31
+ manager = Octoshark::ConnectionManager.new
32
+ manager.with_connection(config) do
33
+ expect(manager.current_connection?).to be_truthy
34
+ end
35
+ end
36
+
37
+ it "returns false if no current one" do
38
+ manager = Octoshark::ConnectionManager.new
39
+
40
+ expect(manager.current_connection?).to be_falsey
41
+ end
42
+ end
43
+
44
+ describe "#current_or_default_connection" do
45
+ it "returns current connection" do
46
+ manager = Octoshark::ConnectionManager.new
47
+ manager.with_connection(config) do |connection|
48
+ expect(manager.current_or_default_connection).to eq(connection)
49
+ end
50
+ end
51
+
52
+ it "returns default connection when no current connection" do
53
+ manager = Octoshark::ConnectionManager.new
54
+
55
+ expect(manager.current_or_default_connection).to eq(ActiveRecord::Base.connection_pool.connection)
56
+ end
57
+ end
58
+
59
+ describe '#without_connection' do
60
+ it "can reset current connection temporarily inside nested connection block" do
61
+ manager = Octoshark::ConnectionManager.new
62
+
63
+ manager.with_connection(config) do
64
+ expect(db(manager.current_connection)).to eq("db1")
65
+
66
+ manager.without_connection do
67
+ expect { manager.current_connection }.to raise_error(Octoshark::Error::NoCurrentConnection)
68
+ end
69
+
70
+ expect(db(manager.current_connection)).to eq("db1")
71
+ end
72
+ end
73
+ end
74
+ end
@@ -4,9 +4,9 @@ db1:
4
4
  reconnect: false
5
5
  database: octoshark_db1
6
6
  pool: 5
7
- username: travis
8
- password:
9
- host: localhost
7
+ username: root
8
+ password: pass
9
+ host: 127.0.0.1
10
10
  port: 3306
11
11
 
12
12
  db2:
@@ -15,7 +15,7 @@ db2:
15
15
  reconnect: false
16
16
  database: octoshark_db2
17
17
  pool: 5
18
- username: travis
19
- password:
20
- host: localhost
18
+ username: root
19
+ password: pass
20
+ host: 127.0.0.1
21
21
  port: 3306
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.1.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dalibor Nasevic
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-04 00:00:00.000000000 Z
11
+ date: 2021-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.0'
27
- - !ruby/object:Gem::Dependency
28
- name: bundler
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '1.5'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '1.5'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: rake
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -58,42 +44,42 @@ dependencies:
58
44
  requirements:
59
45
  - - "~>"
60
46
  - !ruby/object:Gem::Version
61
- version: 3.0.0
47
+ version: 3.7.0
62
48
  type: :development
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
52
  - - "~>"
67
53
  - !ruby/object:Gem::Version
68
- version: 3.0.0
54
+ version: 3.7.0
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: sqlite3
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
59
  - - "~>"
74
60
  - !ruby/object:Gem::Version
75
- version: 1.3.0
61
+ version: 1.4.1
76
62
  type: :development
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
66
  - - "~>"
81
67
  - !ruby/object:Gem::Version
82
- version: 1.3.0
68
+ version: 1.4.1
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: mysql2
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
73
  - - "~>"
88
74
  - !ruby/object:Gem::Version
89
- version: 0.3.14
75
+ version: 0.5.2
90
76
  type: :development
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
80
  - - "~>"
95
81
  - !ruby/object:Gem::Version
96
- version: 0.3.14
82
+ version: 0.5.2
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: appraisal
99
85
  requirement: !ruby/object:Gem::Requirement
@@ -115,38 +101,49 @@ executables: []
115
101
  extensions: []
116
102
  extra_rdoc_files: []
117
103
  files:
104
+ - ".github/workflows/ci-legacy.yml"
105
+ - ".github/workflows/ci.yml"
118
106
  - ".gitignore"
119
107
  - ".rspec"
120
108
  - ".ruby-version"
121
- - ".travis.yml"
122
109
  - Appraisals
110
+ - CHANGELOG.md
123
111
  - Gemfile
124
112
  - LICENSE.txt
125
113
  - README.md
126
114
  - Rakefile
115
+ - gemfiles/rails3.0.gemfile
127
116
  - gemfiles/rails3.1.gemfile
128
117
  - gemfiles/rails3.2.gemfile
118
+ - gemfiles/rails4.0.gemfile
129
119
  - gemfiles/rails4.1.gemfile
130
120
  - gemfiles/rails4.2.gemfile
131
- - gemfiles/rails4.gemfile
121
+ - gemfiles/rails5.0.gemfile
122
+ - gemfiles/rails5.1.gemfile
123
+ - gemfiles/rails5.2.gemfile
124
+ - gemfiles/rails6.0.gemfile
125
+ - gemfiles/rails6.1.gemfile
132
126
  - lib/octoshark.rb
133
127
  - lib/octoshark/active_record_extensions.rb
134
128
  - lib/octoshark/connection_manager.rb
129
+ - lib/octoshark/connection_pools_manager.rb
130
+ - lib/octoshark/current_connection.rb
135
131
  - lib/octoshark/error.rb
136
132
  - lib/octoshark/version.rb
137
133
  - octoshark.gemspec
138
134
  - spec/octoshark/active_record_extensions_spec.rb
139
135
  - spec/octoshark/connection_manager_spec.rb
140
- - spec/octoshark_spec.rb
136
+ - spec/octoshark/connection_pools_manager_spec.rb
137
+ - spec/octoshark/current_connection_spec.rb
141
138
  - spec/spec_helper.rb
139
+ - spec/support/config.yml.github
142
140
  - spec/support/config.yml.template
143
- - spec/support/config.yml.travis
144
141
  - spec/support/helpers.rb
145
142
  homepage: https://github.com/dalibor/octoshark
146
143
  licenses:
147
144
  - MIT
148
145
  metadata: {}
149
- post_install_message:
146
+ post_install_message:
150
147
  rdoc_options: []
151
148
  require_paths:
152
149
  - lib
@@ -161,16 +158,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
161
158
  - !ruby/object:Gem::Version
162
159
  version: '0'
163
160
  requirements: []
164
- rubyforge_project:
165
- rubygems_version: 2.2.2
166
- signing_key:
161
+ rubygems_version: 3.1.6
162
+ signing_key:
167
163
  specification_version: 4
168
164
  summary: Octoshark is an ActiveRecord connection switcher
169
165
  test_files:
170
166
  - spec/octoshark/active_record_extensions_spec.rb
171
167
  - spec/octoshark/connection_manager_spec.rb
172
- - spec/octoshark_spec.rb
168
+ - spec/octoshark/connection_pools_manager_spec.rb
169
+ - spec/octoshark/current_connection_spec.rb
173
170
  - spec/spec_helper.rb
171
+ - spec/support/config.yml.github
174
172
  - spec/support/config.yml.template
175
- - spec/support/config.yml.travis
176
173
  - spec/support/helpers.rb
data/.travis.yml DELETED
@@ -1,18 +0,0 @@
1
- rvm:
2
- - 2.1.0
3
- cache:
4
- - bundler
5
- notifications:
6
- email:
7
- - dalibor.nasevic@gmail.com
8
- gemfile:
9
- - gemfiles/rails3.1.gemfile
10
- - gemfiles/rails3.2.gemfile
11
- - gemfiles/rails4.gemfile
12
- - gemfiles/rails4.1.gemfile
13
- - gemfiles/rails4.2.gemfile
14
- before_script:
15
- - cp spec/support/config.yml.travis spec/support/config.yml
16
- - bundle exec rake db:create
17
- script:
18
- - bundle exec rspec spec
@@ -1,40 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Octoshark do
4
-
5
- describe ".reset_connection_managers!" do
6
- it "resets connection managers" do
7
- manager = Octoshark::ConnectionManager.new(configs)
8
- old_pools = manager.connection_pools.map(&:object_id)
9
-
10
- Octoshark.reset_connection_managers!
11
-
12
- new_pools = manager.connection_pools.map(&:object_id)
13
- expect(new_pools).to_not eq(old_pools)
14
- end
15
- end
16
-
17
- describe ".disconnect!" do
18
- it "disconnects connection managers" do
19
- manager = Octoshark::ConnectionManager.new(configs)
20
-
21
- Octoshark.disconnect!
22
-
23
- expect(Octoshark.connection_managers).to be_blank
24
- end
25
-
26
- it "cleans old connections" do
27
- manager = Octoshark::ConnectionManager.new(configs)
28
-
29
- manager.with_connection(:db1) { |connection| connection.execute("SELECT 1") }
30
- manager.with_connection(:db2) { |connection| connection.execute("SELECT 1") }
31
- expect(manager.connection_pools[:db1].connections.count).to eq(1)
32
- expect(manager.connection_pools[:db2].connections.count).to eq(1)
33
-
34
- Octoshark.disconnect!
35
-
36
- expect(manager.connection_pools[:db1].connections.count).to eq(0)
37
- expect(manager.connection_pools[:db2].connections.count).to eq(0)
38
- end
39
- end
40
- end