active_record_host_pool 0.6.5 → 0.7.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3afb58583904ec2e606e050f1a2a13dff283d13e
4
+ data.tar.gz: 28250948075a9e1e29778b2fdd4a08075da2d4f7
5
+ SHA512:
6
+ metadata.gz: 30de25c6e3cc4f8caf0a1f89ed2d07eda70288e4860728190e8efdd0b82cb1b27010399d35c98465319099526bbe124672d05655f52b474c1bc6e13661eaa557
7
+ data.tar.gz: 11d9b5be51cae0d7e23924cf054a6baca3ba4a3ab1080b55b5a73a42213c094106b157d0ae55cb622d627f7627c3df5a3959d770791b429f93918c378cbb6f06
data/Readme.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![Build Status](https://travis-ci.org/zendesk/active_record_host_pool.svg?branch=master)](https://travis-ci.org/zendesk/active_record_host_pool)
2
+
1
3
  # ActiveRecord host pooling
2
4
 
3
5
  This gem allows for one ActiveRecord connection to be used to connect to multiple databases on a server.
@@ -5,9 +7,8 @@ It accomplishes this by calling select_db() as necessary to switch databases bet
5
7
 
6
8
  ## Support
7
9
 
8
- For now, the only backend known to work is mysql (and not with the mysql2 library, yet).
9
- Postgres, from an informal reading of the docs, will never support the concept of one
10
- server connection sharing multiple dbs.
10
+ For now, the only backend known to work is MySQL, with the mysql2 gem.
11
+ Postgres, from an informal reading of the docs, will never support the concept of one server connection sharing multiple dbs.
11
12
 
12
13
  ## Installation
13
14
 
@@ -16,11 +17,11 @@ server connection sharing multiple dbs.
16
17
  and make sure to require 'active\_record\_host\_pool' in some way.
17
18
 
18
19
  ## Testing
19
- You need a local user called snoopy.
20
+ You need a local user called 'travis'.
20
21
 
21
22
  mysql -uroot
22
- CREATE USER 'snoopy'@'localhost';
23
- GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX ON *.* TO 'snoopy'@'localhost';
23
+ CREATE USER 'travis'@'localhost';
24
+ GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX ON *.* TO 'travis'@'localhost';
24
25
  FLUSH PRIVILEGES;
25
26
 
26
27
  ## Copyright
@@ -28,5 +29,5 @@ You need a local user called snoopy.
28
29
  Copyright (c) 2011 Zendesk. See MIT-LICENSE for details.
29
30
 
30
31
  ## Authors
31
- Ben Osheroff <ben@gimbo.net>,
32
+ Ben Osheroff <ben@gimbo.net>,
32
33
  Mick Staugaard <mick@staugaard.com>
@@ -79,10 +79,16 @@ module ActiveRecord
79
79
  module ConnectionAdapters
80
80
  class ConnectionHandler
81
81
  def establish_connection(name, spec)
82
- if @class_to_pool # AR 3.2
82
+ if ActiveRecord::VERSION::MAJOR >= 4
83
+ owner = name
84
+
85
+ @class_to_pool.clear
86
+ raise RuntimeError, "Anonymous class is not allowed." unless owner.name
87
+ owner_to_pool[owner.name] = ActiveRecordHostPool::PoolProxy.new(spec)
88
+ elsif ActiveRecord::VERSION::MAJOR == 3 && ActiveRecord::VERSION::MINOR == 2
83
89
  @connection_pools[spec] ||= ActiveRecordHostPool::PoolProxy.new(spec)
84
90
  @class_to_pool[name] = @connection_pools[spec]
85
- else # AR 3.1 and lower
91
+ else
86
92
  @connection_pools[name] = ActiveRecordHostPool::PoolProxy.new(spec)
87
93
  end
88
94
  end
data/test/database.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  test_host_1_db_1:
2
- adapter: mysql
2
+ adapter: mysql2
3
3
  encoding: utf8
4
4
  database: arhp_test_1
5
5
  username: root
@@ -8,7 +8,7 @@ test_host_1_db_1:
8
8
  reconnect: true
9
9
 
10
10
  test_host_1_db_2:
11
- adapter: mysql
11
+ adapter: mysql2
12
12
  encoding: utf8
13
13
  database: arhp_test_2
14
14
  username: root
@@ -17,7 +17,7 @@ test_host_1_db_2:
17
17
  reconnect: true
18
18
 
19
19
  test_host_2_db_3:
20
- adapter: mysql
20
+ adapter: mysql2
21
21
  encoding: utf8
22
22
  database: arhp_test_3
23
23
  username: root
@@ -27,7 +27,7 @@ test_host_2_db_3:
27
27
  reconnect: true
28
28
 
29
29
  test_host_2_db_4:
30
- adapter: mysql
30
+ adapter: mysql2
31
31
  encoding: utf8
32
32
  database: arhp_test_4
33
33
  username: root
@@ -37,17 +37,17 @@ test_host_2_db_4:
37
37
  reconnect: true
38
38
 
39
39
  test_host_2_db_5:
40
- adapter: mysql
40
+ adapter: mysql2
41
41
  encoding: utf8
42
42
  database: arhp_test_4
43
- username: snoopy
43
+ username: travis
44
44
  password:
45
45
  host: 127.0.0.1
46
46
  port: 3306
47
47
  reconnect: true
48
48
 
49
49
  test_host_1_db_not_there:
50
- adapter: mysql
50
+ adapter: mysql2
51
51
  encoding: utf8
52
52
  database: arhp_test_no_create
53
53
  username: root
data/test/helper.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require 'bundler/setup'
2
- require 'test/unit'
2
+ require 'minitest/autorun'
3
3
 
4
4
  require 'active_record_host_pool'
5
5
  require 'logger'
data/test/test_arhp.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require File.expand_path('helper', File.dirname(__FILE__))
2
2
 
3
- class ActiveRecordHostPoolTest < Test::Unit::TestCase
3
+ class ActiveRecordHostPoolTest < MiniTest::Unit::TestCase
4
4
  include ARHPTestSetup
5
5
  def setup
6
6
  arhp_create_databases
@@ -97,7 +97,7 @@ class ActiveRecordHostPoolTest < Test::Unit::TestCase
97
97
 
98
98
  # now, disable our auto-switching and trigger a mysql reconnect
99
99
  switch_to_klass.connection.unproxied.stubs(:_switch_connection).returns(true)
100
- switch_to_klass.connection.execute("KILL #{thread_id}")
100
+ Test3.connection.execute("KILL #{thread_id}")
101
101
 
102
102
  # and finally, did mysql reconnect correctly?
103
103
  puts "\nAnd now we end up on #{current_database(switch_to_klass)}" if debug_me
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_record_host_pool
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.5
5
- prerelease:
4
+ version: 0.7.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Ben Osheroff
@@ -14,17 +13,15 @@ dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activerecord
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  description: ''
@@ -36,12 +33,12 @@ extra_rdoc_files:
36
33
  - MIT-LICENSE
37
34
  - Readme.md
38
35
  files:
36
+ - MIT-LICENSE
39
37
  - Readme.md
40
38
  - lib/active_record_host_pool.rb
41
39
  - lib/active_record_host_pool/connection_adapter_mixin.rb
42
40
  - lib/active_record_host_pool/connection_proxy.rb
43
41
  - lib/active_record_host_pool/pool_proxy.rb
44
- - MIT-LICENSE
45
42
  - test/database.yml
46
43
  - test/helper.rb
47
44
  - test/schema.rb
@@ -49,27 +46,26 @@ files:
49
46
  homepage: https://github.com/zendesk/active_record_host_pool
50
47
  licenses:
51
48
  - MIT
49
+ metadata: {}
52
50
  post_install_message:
53
51
  rdoc_options: []
54
52
  require_paths:
55
53
  - lib
56
54
  required_ruby_version: !ruby/object:Gem::Requirement
57
- none: false
58
55
  requirements:
59
- - - ! '>='
56
+ - - ">="
60
57
  - !ruby/object:Gem::Version
61
58
  version: '0'
62
59
  required_rubygems_version: !ruby/object:Gem::Requirement
63
- none: false
64
60
  requirements:
65
- - - ! '>='
61
+ - - ">="
66
62
  - !ruby/object:Gem::Version
67
63
  version: '0'
68
64
  requirements: []
69
65
  rubyforge_project:
70
- rubygems_version: 1.8.25
66
+ rubygems_version: 2.2.2
71
67
  signing_key:
72
- specification_version: 3
68
+ specification_version: 4
73
69
  summary: Allow ActiveRecord to share a connection to multiple databases on the same
74
70
  host
75
71
  test_files:
@@ -77,4 +73,3 @@ test_files:
77
73
  - test/helper.rb
78
74
  - test/schema.rb
79
75
  - test/test_arhp.rb
80
- has_rdoc: