activerecord-bogacs 0.3.0 → 0.4.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
  SHA1:
3
- metadata.gz: 930e066b793b68dafffe166563475cfa1812aad6
4
- data.tar.gz: 56cd2c22124126859b4e8bb5da2f8fe133c43a5e
3
+ metadata.gz: 1f7c9f5688cb27fb4c84bea3a516d1d2d014fb1c
4
+ data.tar.gz: 17a6269479cb432bda7d027c0d89586c6cecaa19
5
5
  SHA512:
6
- metadata.gz: 8b9a4c0e4877fd090e266096c7c48cff52d3a2856efc712c8e3919c659d9f8a866ccf1f19d92ac44258e0d44cbfc255bab33473ab4a2c2200fbd6a5e228ebcc5
7
- data.tar.gz: daaf27dcb6b82139cfeaf396181ddfbe6bf3ff36300f79dc56ae6aee9d4b604250f2172f434296136350c2bfb290907a2030d8b741e06330343b5fe51db2e4b2
6
+ metadata.gz: 1ad54c3ab7af8f4edbc2fea17cba7f1d32d784d4107ba8fe186e58fed676dd30f61b91bef610d3912b9f0bc1022286b39366b8b605228ba9e2c38939f155910b
7
+ data.tar.gz: 8dffdfc6857d604ab66931b0a30eca0d6e5b5d9fd148ec1dcb73721dd29cf338de3744730974581cb4f624e1cf402e2c1790357201310904e8cdef8787be7d54
@@ -5,8 +5,7 @@ jdk:
5
5
  - oraclejdk7
6
6
  - oraclejdk8
7
7
  rvm:
8
- - jruby-1.7.16
9
- #- jruby-head
8
+ - jruby-1.7.22
10
9
  #- 2.1.2
11
10
  before_install:
12
11
  - ((jruby -v | grep 1.8.7) && jruby --1.9 -S gem update --system 2.1.11) || true
@@ -21,8 +20,8 @@ script:
21
20
  - bundle exec rake dbcp:download
22
21
  - bundle exec rake db:create:mysql db:create:postgresql
23
22
  env:
24
- - JRUBY_OPTS="$JRUBY_OPTS" AR_ADAPTER=mysql AR_VERSION="~> 4.1.9" HIKARI_VERSION="2.3.2"
25
- - JRUBY_OPTS="$JRUBY_OPTS" AR_ADAPTER=postgresql AR_VERSION="~> 4.1.9" HIKARI_VERSION="2.3.1-java6"
23
+ - JRUBY_OPTS="$JRUBY_OPTS" AR_ADAPTER=mysql AR_VERSION="~> 4.1.9" HIKARI_VERSION="2.3.12"
24
+ - JRUBY_OPTS="$JRUBY_OPTS" AR_ADAPTER=postgresql AR_VERSION="~> 4.1.9" HIKARI_VERSION="2.3.2-java6"
26
25
  - JRUBY_OPTS="$JRUBY_OPTS" AR_ADAPTER=mysql AR_VERSION="~> 4.1.9" HIKARI_VERSION="2.0.1-java6"
27
26
  - JRUBY_OPTS="$JRUBY_OPTS" AR_ADAPTER=postgresql AR_VERSION="~> 3.2.18" HIKARI_VERSION="1.4.0"
28
27
  - JRUBY_OPTS="--1.8 $JRUBY_OPTS" AR_ADAPTER=mysql AR_VERSION="~> 3.2.18" HIKARI_VERSION="2.2.5-java6"
@@ -30,15 +29,22 @@ matrix:
30
29
  #allow_failures:
31
30
  #- rvm: jruby-head
32
31
  exclude:
33
- - rvm: jruby-1.7.16
34
- env: JRUBY_OPTS="$JRUBY_OPTS" AR_ADAPTER=mysql AR_VERSION="~> 4.1.9" HIKARI_VERSION="2.3.2"
32
+ - rvm: jruby-1.7.22
33
+ env: JRUBY_OPTS="$JRUBY_OPTS" AR_ADAPTER=mysql AR_VERSION="~> 4.1.9" HIKARI_VERSION="2.3.12"
35
34
  jdk: oraclejdk7
36
- - rvm: jruby-1.7.16
37
- env: JRUBY_OPTS="$JRUBY_OPTS" AR_ADAPTER=postgresql AR_VERSION="~> 4.1.9" HIKARI_VERSION="2.3.1-java6"
35
+ - rvm: jruby-1.7.22
36
+ env: JRUBY_OPTS="$JRUBY_OPTS" AR_ADAPTER=postgresql AR_VERSION="~> 4.1.9" HIKARI_VERSION="2.3.2-java6"
38
37
  jdk: oraclejdk8
39
- - rvm: jruby-1.7.16
38
+ - rvm: jruby-1.7.22
40
39
  env: JRUBY_OPTS="$JRUBY_OPTS" AR_ADAPTER=mysql AR_VERSION="~> 4.1.9" HIKARI_VERSION="2.0.1-java6"
41
40
  jdk: oraclejdk8
42
- - rvm: jruby-1.7.16
41
+ - rvm: jruby-1.7.22
43
42
  env: JRUBY_OPTS="--1.8 $JRUBY_OPTS" AR_ADAPTER=mysql AR_VERSION="~> 3.2.18" HIKARI_VERSION="2.2.5-java6"
43
+ jdk: oraclejdk8
44
+ include:
45
+ - rvm: jruby-9.0.1.0
46
+ env: JRUBY_OPTS="$JRUBY_OPTS" AR_ADAPTER=mysql AR_VERSION="~> 4.1.9" HIKARI_VERSION="2.2.5-java6"
47
+ jdk: oraclejdk7
48
+ - rvm: jruby-9.0.1.0
49
+ env: JRUBY_OPTS="$JRUBY_OPTS" AR_ADAPTER=mysql AR_VERSION="~> 3.2.18" HIKARI_VERSION="2.3.9"
44
50
  jdk: oraclejdk8
data/Gemfile CHANGED
@@ -19,6 +19,9 @@ end
19
19
  if RUBY_VERSION.index('1.8') == 0
20
20
  gem 'i18n', '< 0.7.0' # Gem::InstallError: i18n requires Ruby version >= 1.9.3
21
21
  gem 'atomic', '1.1.16' # concurrent-ruby gem only for Ruby version >= 1.9.3
22
+ gem 'thread_safe', '~> 0.3'
23
+ else
24
+ gem 'concurrent-ruby', '1.0.0.pre4', :require => nil
22
25
  end
23
26
 
24
27
  platform :jruby do
data/Rakefile CHANGED
@@ -29,6 +29,21 @@ task 'db:create:mysql' do
29
29
  # puts "... run tests with MySQL using: `AR_ADAPTER=mysql rake test `"
30
30
  end
31
31
 
32
+ task 'db:drop:mysql' do
33
+ fail "could not create database: mysql executable not found" unless mysql = _which('mysql')
34
+ ENV['Rake'] = true.to_s; ENV['AR_ADAPTER'] ||= 'mysql'
35
+ require File.expand_path('test/test_helper.rb', File.dirname(__FILE__))
36
+
37
+ script = "DROP DATABASE `#{AR_CONFIG[:database]}`;"
38
+ params = { '-u' => 'root' }
39
+ if ENV['DATABASE_YML']; require 'yaml'
40
+ password = YAML.load(File.new(ENV['DATABASE_YML']))["production"]["password"]
41
+ params['--password'] = password
42
+ end
43
+ puts "Creating MySQL database: #{AR_CONFIG[:database]}"
44
+ sh "cat #{_sql_script(script).path} | #{mysql} #{params.to_a.join(' ')}", :verbose => $VERBOSE
45
+ end
46
+
32
47
  desc "Creates a (test) PostgreSQL database"
33
48
  task 'db:create:postgresql' do
34
49
  fail 'could not create database: psql executable not found' unless psql = _which('psql')
@@ -94,14 +109,14 @@ namespace :tomcat do
94
109
 
95
110
  tomcat_maven_repo = 'http://repo2.maven.org/maven2/org/apache/tomcat'
96
111
  download_dir = File.expand_path('test/jars', File.dirname(__FILE__))
97
- version_default = '7.0.59'
112
+ version_default = '7.0.64'
98
113
 
99
114
  [ 'tomcat-jdbc', 'tomcat-dbcp' ].each do |tomcat_pool|
100
115
  namespace tomcat_pool.sub('tomcat-', '') do # rake tomcat:dbcp:download
101
116
 
102
117
  tomcat_pool_jar = "#{tomcat_pool}.jar"
103
118
 
104
- task :download, :version do |_,args| # rake tomcat:jdbc:download[7.0.54]
119
+ task :download, :version do |_,args| # rake tomcat:jdbc:download[7.0.64]
105
120
  env_key = "#{tomcat_pool.upcase.sub('-', '_')}_VERSION" # 'TOMCAT_JDBC_VERSION'
106
121
  version = args[:version] || ENV[env_key] || version_default
107
122
 
@@ -8,19 +8,21 @@ Gem::Specification.new do |gem|
8
8
 
9
9
  gem.authors = ['Karol Bucek']
10
10
  gem.email = ['self@kares.org']
11
- gem.description = %q{(experimental) alternatives for ActiveRecord::ConnectionAdapters::ConnectionPool}
12
- gem.summary = %q{A small body of still water, usually fresh ... for ActiveRecord!}
11
+ gem.description = %q{Improved ActiveRecord::ConnectionAdapters::ConnectionPool alternatives}
12
+ gem.summary = 'Bogacs contains several pool implementations that can be used as a replacement ' <<
13
+ "for ActiveRecord's built-in pool, e.g. DefaultPool is an upstream tuned version with an API " <<
14
+ 'that is compatible with older AR versions.' <<
15
+ "\n\nNOTE: you'll need concurrent-ruby or thread_safe gem."
13
16
  gem.homepage = "http://github.com/kares/activerecord-bogacs"
14
- #gem.licenses = ['MIT']
17
+ gem.licenses = ['MIT']
15
18
 
16
19
  gem.files = `git ls-files`.split($/)
17
20
  gem.executables = gem.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
21
  gem.test_files = gem.files.grep(%r{^test/})
19
22
  gem.require_paths = ["lib"]
20
23
 
21
- gem.add_runtime_dependency 'thread_safe', '~> 0.3'
24
+ gem.add_development_dependency 'concurrent-ruby', '>= 0.9' if RUBY_VERSION.index('1.8') != 0
22
25
 
23
- gem.add_development_dependency 'concurrent-ruby', '>= 0.8' if RUBY_VERSION.index('1.8') != 0
24
26
  gem.add_development_dependency 'rake', '~> 10.3'
25
27
  gem.add_development_dependency 'test-unit', '~> 2.5'
26
28
  end
@@ -1,9 +1,9 @@
1
1
  require 'thread'
2
- require 'thread_safe'
3
2
  require 'monitor'
4
3
 
5
4
  require 'active_record/connection_adapters/adapter_compat'
6
5
  require 'active_record/bogacs/pool_support'
6
+ require 'active_record/bogacs/thread_safe'
7
7
 
8
8
  module ActiveRecord
9
9
  module Bogacs
@@ -234,7 +234,7 @@ module ActiveRecord
234
234
  end
235
235
 
236
236
  # The cache of reserved connections mapped to threads
237
- @reserved_connections = ThreadSafe::Cache.new(:initial_capacity => @size)
237
+ @reserved_connections = ThreadSafe::Map.new(:initial_capacity => @size)
238
238
 
239
239
  @connections = []
240
240
  @automatic_reconnect = true
@@ -279,7 +279,7 @@ module ActiveRecord
279
279
  def release_connection(with_id = current_connection_id)
280
280
  #synchronize do
281
281
  conn = @reserved_connections.delete(with_id)
282
- checkin conn if conn
282
+ checkin conn, true if conn
283
283
  #end
284
284
  end
285
285
 
@@ -381,15 +381,13 @@ module ActiveRecord
381
381
  #
382
382
  # +conn+: an AbstractAdapter object, which was obtained by earlier by
383
383
  # calling +checkout+ on this pool.
384
- def checkin(conn)
384
+ def checkin(conn, released = nil)
385
385
  synchronize do
386
- owner = conn.owner
387
-
388
386
  conn.run_callbacks :checkin do
389
387
  conn.expire
390
388
  end
391
389
 
392
- release owner
390
+ release conn.owner unless released
393
391
 
394
392
  @available.add conn
395
393
  end
@@ -453,7 +451,6 @@ module ActiveRecord
453
451
 
454
452
  def release(owner)
455
453
  thread_id = owner.object_id
456
-
457
454
  @reserved_connections.delete thread_id
458
455
  end
459
456
 
@@ -1,5 +1,5 @@
1
- require 'thread_safe'
2
1
  require 'active_record/bogacs/pool_support'
2
+ require 'active_record/bogacs/thread_safe'
3
3
 
4
4
  module ActiveRecord
5
5
  module Bogacs
@@ -7,8 +7,7 @@ module ActiveRecord
7
7
 
8
8
  include PoolSupport
9
9
 
10
- include ThreadSafe::Util::CheapLockable
11
- alias_method :synchronize, :cheap_synchronize
10
+ include ThreadSafe::Synchronized
12
11
 
13
12
  attr_accessor :automatic_reconnect
14
13
 
@@ -21,7 +20,7 @@ module ActiveRecord
21
20
  @size = nil
22
21
  #@automatic_reconnect = true
23
22
 
24
- @reserved_connections = ThreadSafe::Cache.new #:initial_capacity => @size
23
+ @reserved_connections = ThreadSafe::Map.new #:initial_capacity => @size
25
24
  end
26
25
 
27
26
  # @private replacement for attr_reader :connections
@@ -4,9 +4,9 @@ module ActiveRecord
4
4
  module Bogacs
5
5
  module PoolSupport
6
6
 
7
- def self.included(base)
8
- #base.send :include, ThreadSafe::Util::CheapLockable
9
- end
7
+ #def self.included(base)
8
+ #base.send :include, ThreadSafe::Synchronized
9
+ #end
10
10
 
11
11
  def new_connection
12
12
  Base.send(spec.adapter_method, spec.config)
@@ -1,17 +1,8 @@
1
1
  require 'active_record/connection_adapters/abstract/connection_pool'
2
2
 
3
3
  require 'thread'
4
- require 'thread_safe'
5
- begin
6
- require 'concurrent/atomic'
7
- rescue LoadError => e
8
- begin
9
- require 'atomic'
10
- rescue LoadError
11
- warn "shareable pool needs gem 'concurrent-ruby' please install or add it to your Gemfile"
12
- raise e
13
- end
14
- end
4
+
5
+ require 'active_record/bogacs/thread_safe'
15
6
 
16
7
  require 'active_record/bogacs/pool_support'
17
8
 
@@ -23,9 +14,17 @@ require 'active_record/bogacs/pool_support'
23
14
  module ActiveRecord
24
15
  module Bogacs
25
16
  class ShareablePool < ConnectionAdapters::ConnectionPool # NOTE: maybe do not override?!
26
- include ThreadSafe::Util::CheapLockable
27
17
  include PoolSupport
28
18
 
19
+ if ActiveRecord::Bogacs::ThreadSafe.load_cheap_lockable(false)
20
+ include ThreadSafe::CheapLockable
21
+ else
22
+ alias_method :cheap_synchronize, :synchronize
23
+ end
24
+
25
+ ActiveRecord::Bogacs::ThreadSafe.load_atomic_reference
26
+ AtomicReference = ThreadSafe::AtomicReference
27
+
29
28
  DEFAULT_SHARED_POOL = 0.25 # only allow 25% of the pool size to be shared
30
29
  MAX_THREAD_SHARING = 5 # not really a strict limit but should hold
31
30
 
@@ -39,7 +38,7 @@ module ActiveRecord
39
38
  # size 0.0 - 1.0 assumes percentage of the pool size
40
39
  shared_size = ( @size * shared_size ).round if shared_size <= 1.0
41
40
  @shared_size = shared_size.to_i
42
- @shared_connections = ThreadSafe::Cache.new # :initial_capacity => @shared_size, :concurrency_level => 20
41
+ @shared_connections = ThreadSafe::Map.new # :initial_capacity => @shared_size, :concurrency_level => 20
43
42
  end
44
43
 
45
44
  # @override
@@ -232,14 +231,8 @@ module ActiveRecord
232
231
  least_shared # might be nil in that case we'll likely wait (as super)
233
232
  end
234
233
 
235
- if defined? Concurrent::Atomic
236
- Atomic = Concurrent::Atomic
237
- else
238
- Atomic = ::Atomic
239
- end
240
-
241
234
  def add_shared_connection(connection)
242
- @shared_connections[connection] = Atomic.new(1)
235
+ @shared_connections[connection] = AtomicReference.new(1)
243
236
  end
244
237
 
245
238
  def rem_shared_connection(connection)
@@ -0,0 +1,76 @@
1
+ module ActiveRecord
2
+ module Bogacs
3
+ module ThreadSafe
4
+
5
+ #def self.load_map
6
+ begin
7
+ require 'concurrent/map.rb'
8
+ rescue LoadError => e
9
+ begin
10
+ require 'thread_safe'
11
+ rescue
12
+ warn "activerecord-bogacs needs gem 'concurrent-ruby', '~> 1.0' (or the old 'thread_safe' gem) " <<
13
+ "please install or add it to your Gemfile"
14
+ raise e
15
+ end
16
+ end
17
+ #end
18
+
19
+ #load_map # always pre-load thread_safe
20
+
21
+ if defined? ::Concurrent::Map
22
+ Map = ::Concurrent::Map
23
+ else
24
+ Map = ::ThreadSafe::Cache
25
+ end
26
+
27
+ autoload :Synchronized, 'active_record/bogacs/thread_safe/synchronized'
28
+
29
+ def self.load_atomic_reference
30
+ return const_get :AtomicReference if const_defined? :AtomicReference
31
+
32
+ begin
33
+ require 'concurrent/atomic/atomic_reference.rb'
34
+ rescue LoadError => e
35
+ begin
36
+ require 'atomic'
37
+ rescue LoadError
38
+ warn "shareable pool needs gem 'concurrent-ruby', '>= 0.9.1' (or the old 'atomic' gem) " <<
39
+ "please install or add it to your Gemfile"
40
+ raise e
41
+ end
42
+ end
43
+
44
+ if defined? ::Concurrent::AtomicReference
45
+ const_set :AtomicReference, ::Concurrent::AtomicReference
46
+ else
47
+ const_set :AtomicReference, ::Atomic
48
+ end
49
+ end
50
+
51
+ def self.load_cheap_lockable(required = true)
52
+ return const_get :CheapLockable if const_defined? :CheapLockable
53
+
54
+ begin
55
+ require 'concurrent/thread_safe/util/cheap_lockable.rb'
56
+ rescue LoadError => e
57
+ begin
58
+ require 'thread_safe'
59
+ rescue
60
+ return nil unless required
61
+ warn "activerecord-bogacs needs gem 'concurrent-ruby', '~> 1.0' (or the old 'thread_safe' gem) " <<
62
+ "please install or add it to your Gemfile"
63
+ raise e
64
+ end
65
+ end
66
+
67
+ if defined? ::Concurrent::ThreadSafe::Util::CheapLockable
68
+ const_set :CheapLockable, ::Concurrent::ThreadSafe::Util::CheapLockable
69
+ else
70
+ const_set :CheapLockable, ::ThreadSafe::Util::CheapLockable
71
+ end
72
+ end
73
+
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,33 @@
1
+ # @note Inpspired by thread_safe gem's Util::CheapLockable mixin.
2
+ module ActiveRecord::Bogacs
3
+ module ThreadSafe
4
+ engine = defined?(RUBY_ENGINE) && RUBY_ENGINE
5
+ if engine == 'rbx'
6
+ module Synchronized
7
+ # Making use of the Rubinius' ability to lock via object headers to avoid
8
+ # the overhead of the extra Mutex objects.
9
+ def synchronize
10
+ ::Rubinius.lock(self)
11
+ begin
12
+ yield
13
+ ensure
14
+ ::Rubinius.unlock(self)
15
+ end
16
+ end
17
+ end
18
+ elsif engine == 'jruby'
19
+ module Synchronized
20
+ require 'jruby'
21
+ # Use Java's native synchronized (this) { wait(); notifyAll(); } to avoid
22
+ # the overhead of the extra Mutex objects
23
+ def synchronize
24
+ ::JRuby.reference0(self).synchronized { yield }
25
+ end
26
+ end
27
+ else
28
+ require 'thread'; require 'monitor'
29
+ # on MRI fallback to built-in MonitorMixin
30
+ Synchronized = MonitorMixin
31
+ end
32
+ end
33
+ end
@@ -1,5 +1,5 @@
1
1
  module ActiveRecord
2
2
  module Bogacs
3
- VERSION = '0.3.0'
3
+ VERSION = '0.4.0'
4
4
  end
5
5
  end
@@ -42,7 +42,7 @@ if url = ENV['AR_URL'] || ENV['JDBC_URL']
42
42
  config[:'url'] = url
43
43
  else
44
44
  config[:'host'] = ENV['AR_HOST'] || 'localhost'
45
- config[:'database'] = ENV['AR_DATABASE'] || 'ar_basin'
45
+ config[:'database'] = ENV['AR_DATABASE'] || 'ar_bogacs'
46
46
  end
47
47
 
48
48
  config[:'pool'] = ENV['AR_POOL_SIZE'] ? ENV['AR_POOL_SIZE'].to_i : pool_size
@@ -111,8 +111,8 @@ module ActiveRecord
111
111
  module Bogacs
112
112
 
113
113
  begin
114
- require 'concurrent/atomic'
115
- Atomic = Concurrent::Atomic
114
+ require 'concurrent/atomic/atomic_reference'
115
+ Atomic = Concurrent::AtomicReference
116
116
  rescue LoadError
117
117
  require 'atomic'
118
118
  Atomic = ::Atomic
metadata CHANGED
@@ -1,41 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-bogacs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Karol Bucek
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-08 00:00:00.000000000 Z
11
+ date: 2015-10-22 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: thread_safe
15
- version_requirements: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ~>
18
- - !ruby/object:Gem::Version
19
- version: '0.3'
20
- requirement: !ruby/object:Gem::Requirement
21
- requirements:
22
- - - ~>
23
- - !ruby/object:Gem::Version
24
- version: '0.3'
25
- prerelease: false
26
- type: :runtime
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: concurrent-ruby
29
15
  version_requirements: !ruby/object:Gem::Requirement
30
16
  requirements:
31
17
  - - '>='
32
18
  - !ruby/object:Gem::Version
33
- version: '0.8'
19
+ version: '0.9'
34
20
  requirement: !ruby/object:Gem::Requirement
35
21
  requirements:
36
22
  - - '>='
37
23
  - !ruby/object:Gem::Version
38
- version: '0.8'
24
+ version: '0.9'
39
25
  prerelease: false
40
26
  type: :development
41
27
  - !ruby/object:Gem::Dependency
@@ -66,7 +52,7 @@ dependencies:
66
52
  version: '2.5'
67
53
  prerelease: false
68
54
  type: :development
69
- description: (experimental) alternatives for ActiveRecord::ConnectionAdapters::ConnectionPool
55
+ description: Improved ActiveRecord::ConnectionAdapters::ConnectionPool alternatives
70
56
  email:
71
57
  - self@kares.org
72
58
  executables: []
@@ -85,6 +71,8 @@ files:
85
71
  - lib/active_record/bogacs/false_pool.rb
86
72
  - lib/active_record/bogacs/pool_support.rb
87
73
  - lib/active_record/bogacs/shareable_pool.rb
74
+ - lib/active_record/bogacs/thread_safe.rb
75
+ - lib/active_record/bogacs/thread_safe/synchronized.rb
88
76
  - lib/active_record/bogacs/version.rb
89
77
  - lib/active_record/connection_adapters/adapter_compat.rb
90
78
  - lib/active_record/shared_connection.rb
@@ -97,7 +85,8 @@ files:
97
85
  - test/active_record/connection_pool_test_methods.rb
98
86
  - test/test_helper.rb
99
87
  homepage: http://github.com/kares/activerecord-bogacs
100
- licenses: []
88
+ licenses:
89
+ - MIT
101
90
  metadata: {}
102
91
  post_install_message:
103
92
  rdoc_options: []
@@ -115,10 +104,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
104
  version: '0'
116
105
  requirements: []
117
106
  rubyforge_project:
118
- rubygems_version: 2.4.5
107
+ rubygems_version: 2.4.8
119
108
  signing_key:
120
109
  specification_version: 4
121
- summary: A small body of still water, usually fresh ... for ActiveRecord!
110
+ summary: 'Bogacs contains several pool implementations that can be used as a replacement
111
+ for ActiveRecord''s built-in pool, e.g. DefaultPool is an upstream tuned version
112
+ with an API that is compatible with older AR versions. NOTE: you''ll need concurrent-ruby
113
+ or thread_safe gem.'
122
114
  test_files:
123
115
  - test/active_record/bogacs/default_pool_test.rb
124
116
  - test/active_record/bogacs/false_pool_test.rb