active_record_host_pool 0.6.5 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
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: