makara 0.5.0 → 0.5.1

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.
Files changed (89) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +11 -0
  3. data/.github/workflows/CI.yml +88 -0
  4. data/.rspec +1 -1
  5. data/.rubocop.yml +15 -0
  6. data/.rubocop_todo.yml +670 -0
  7. data/CHANGELOG.md +14 -6
  8. data/Gemfile +1 -16
  9. data/README.md +2 -1
  10. data/Rakefile +1 -1
  11. data/gemfiles/activerecord_5.2.gemfile +8 -0
  12. data/gemfiles/activerecord_6.0.gemfile +8 -0
  13. data/gemfiles/activerecord_6.1.gemfile +8 -0
  14. data/gemfiles/activerecord_head.gemfile +6 -0
  15. data/lib/active_record/connection_adapters/jdbcmysql_makara_adapter.rb +4 -18
  16. data/lib/active_record/connection_adapters/jdbcpostgresql_makara_adapter.rb +4 -18
  17. data/lib/active_record/connection_adapters/makara_abstract_adapter.rb +3 -31
  18. data/lib/active_record/connection_adapters/makara_jdbcmysql_adapter.rb +4 -18
  19. data/lib/active_record/connection_adapters/makara_jdbcpostgresql_adapter.rb +4 -18
  20. data/lib/active_record/connection_adapters/makara_mysql2_adapter.rb +4 -20
  21. data/lib/active_record/connection_adapters/makara_postgis_adapter.rb +4 -19
  22. data/lib/active_record/connection_adapters/makara_postgresql_adapter.rb +4 -20
  23. data/lib/active_record/connection_adapters/mysql2_makara_adapter.rb +4 -20
  24. data/lib/active_record/connection_adapters/postgresql_makara_adapter.rb +4 -20
  25. data/lib/makara.rb +0 -2
  26. data/lib/makara/cache.rb +0 -2
  27. data/lib/makara/config_parser.rb +5 -14
  28. data/lib/makara/connection_wrapper.rb +24 -27
  29. data/lib/makara/context.rb +1 -0
  30. data/lib/makara/cookie.rb +1 -0
  31. data/lib/makara/error_handler.rb +0 -9
  32. data/lib/makara/errors/all_connections_blacklisted.rb +0 -2
  33. data/lib/makara/errors/blacklist_connection.rb +0 -2
  34. data/lib/makara/errors/blacklisted_while_in_transaction.rb +0 -2
  35. data/lib/makara/errors/invalid_shard.rb +1 -3
  36. data/lib/makara/errors/makara_error.rb +0 -1
  37. data/lib/makara/errors/no_connections_available.rb +0 -2
  38. data/lib/makara/logging/logger.rb +0 -4
  39. data/lib/makara/logging/subscriber.rb +0 -2
  40. data/lib/makara/middleware.rb +1 -2
  41. data/lib/makara/pool.rb +2 -7
  42. data/lib/makara/proxy.rb +25 -27
  43. data/lib/makara/railtie.rb +0 -2
  44. data/lib/makara/strategies/abstract.rb +1 -0
  45. data/lib/makara/strategies/priority_failover.rb +2 -0
  46. data/lib/makara/strategies/round_robin.rb +1 -3
  47. data/lib/makara/strategies/shard_aware.rb +0 -2
  48. data/lib/makara/version.rb +1 -3
  49. data/makara.gemspec +24 -5
  50. data/spec/active_record/connection_adapters/makara_abstract_adapter_error_handling_spec.rb +1 -6
  51. data/spec/active_record/connection_adapters/makara_abstract_adapter_spec.rb +0 -9
  52. data/spec/active_record/connection_adapters/makara_mysql2_adapter_spec.rb +9 -22
  53. data/spec/active_record/connection_adapters/makara_postgis_adapter_spec.rb +2 -10
  54. data/spec/active_record/connection_adapters/makara_postgresql_adapter_spec.rb +7 -20
  55. data/spec/cache_spec.rb +0 -1
  56. data/spec/config_parser_spec.rb +54 -56
  57. data/spec/connection_wrapper_spec.rb +1 -2
  58. data/spec/cookie_spec.rb +1 -1
  59. data/spec/middleware_spec.rb +1 -1
  60. data/spec/pool_spec.rb +3 -16
  61. data/spec/proxy_spec.rb +0 -4
  62. data/spec/spec_helper.rb +5 -1
  63. data/spec/strategies/priority_failover_spec.rb +3 -4
  64. data/spec/strategies/round_robin_spec.rb +4 -8
  65. data/spec/strategies/shard_aware_spec.rb +4 -5
  66. data/spec/support/deep_dup.rb +1 -1
  67. data/spec/support/helpers.rb +5 -5
  68. data/spec/support/mock_objects.rb +1 -4
  69. data/spec/support/mysql2_database.yml +2 -2
  70. data/spec/support/mysql2_database_with_custom_errors.yml +2 -2
  71. data/spec/support/pool_extensions.rb +0 -3
  72. data/spec/support/postgis_schema.rb +1 -1
  73. data/spec/support/postgresql_database.yml +0 -2
  74. data/spec/support/proxy_extensions.rb +1 -3
  75. data/spec/support/schema.rb +1 -1
  76. data/spec/support/user.rb +1 -2
  77. metadata +156 -20
  78. data/.travis.yml +0 -131
  79. data/gemfiles/ar-head.gemfile +0 -24
  80. data/gemfiles/ar30.gemfile +0 -36
  81. data/gemfiles/ar31.gemfile +0 -36
  82. data/gemfiles/ar32.gemfile +0 -36
  83. data/gemfiles/ar40.gemfile +0 -24
  84. data/gemfiles/ar41.gemfile +0 -24
  85. data/gemfiles/ar42.gemfile +0 -24
  86. data/gemfiles/ar50.gemfile +0 -24
  87. data/gemfiles/ar51.gemfile +0 -24
  88. data/gemfiles/ar52.gemfile +0 -24
  89. data/gemfiles/ar60.gemfile +0 -24
data/CHANGELOG.md CHANGED
@@ -1,16 +1,24 @@
1
1
  # Change Log
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
+ ## Unreleased
5
+
6
+ ### v0.5.1 - 2021-06-04
7
+ [Full Changelog](https://github.com/instacart/makara/compare/v0.5.0...v0.6.0.pre)
8
+ - Use ActiveRecord URL resolver instead of copying definition [#294](https://github.com/instacart/makara/pull/294) Matt Larraz
9
+ - Fix Ruby 2.7 kwarg warning and add Ruby 3 support [#283](https://github.com/instacart/makara/pull/283) Matt Larraz
10
+ - Drop support for Ruby < 2.5 and ActiveRecord < 5.2 [#281](https://github.com/instacart/makara/pull/281) Matt Larraz
11
+
4
12
  ## v0.5.0 - 2021-01-08
5
13
  [Full Changelog](https://github.com/instacart/makara/compare/v0.4.1...v0.4.2)
6
14
  - Replace deprecated URI.unescape with CGI.unescape [#252](https://github.com/instacart/makara/pull/252) Kevin Robatel
7
15
  - Override equality operator for ActiveRecord connection wrapper [#269](https://github.com/instacart/makara/pull/269) Praveen Burgu
8
- - Handle blacklisted connections in master pool while in transaction [#267] (https://github.com/instacart/makara/pull/267) Praveen Burgu
9
- - Handle ActiveRecord connection pools correctly [#267] (https://github.com/instacart/makara/pull/267) Praveen Burgu
10
- - Add preliminary support for sharded databases [#267] (https://github.com/instacart/makara/pull/267) Praveen Burgu
11
- - Fix ActiveRecord connection pool exhaustion [#268] (https://github.com/instacart/makara/pull/268) Praveen Burgu
12
- - Drop support for Ruby 2.0, 2.1 and 2.2 [#267] (https://github.com/instacart/makara/pull/267) Praveen Burgu
13
- - Drop support ActiveRecord 3.x and 4.x [#267] (https://github.com/instacart/makara/pull/267) Praveen Burgu
16
+ - Handle blacklisted connections in master pool while in transaction [#267](https://github.com/instacart/makara/pull/267) Praveen Burgu
17
+ - Handle ActiveRecord connection pools correctly [#267](https://github.com/instacart/makara/pull/267) Praveen Burgu
18
+ - Add preliminary support for sharded databases [#267](https://github.com/instacart/makara/pull/267) Praveen Burgu
19
+ - Fix ActiveRecord connection pool exhaustion [#268](https://github.com/instacart/makara/pull/268) Praveen Burgu
20
+ - Drop support for Ruby 2.0, 2.1 and 2.2 [#267](https://github.com/instacart/makara/pull/267) Praveen Burgu
21
+ - Drop support ActiveRecord 3.x and 4.x [#267](https://github.com/instacart/makara/pull/267) Praveen Burgu
14
22
  - Set up automatic publishing to Github and Rubygems [#275](https://github.com/instacart/makara/pull/275) Matt Larraz
15
23
 
16
24
 
data/Gemfile CHANGED
@@ -1,19 +1,4 @@
1
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in makara.gemspec
4
4
  gemspec
5
-
6
- gem 'rake'
7
- gem 'rspec'
8
- gem 'timecop'
9
- gem 'byebug', :platform => :ruby
10
- gem 'ruby-debug', :platform => :jruby
11
- gem 'rack', '2.2.3'
12
-
13
- gem 'mysql2', :platform => :ruby
14
- gem 'pg', '0.21.0', :platform => :ruby
15
- gem 'activerecord-postgis-adapter', :platform => :ruby
16
- gem 'rgeo', :platform => :ruby
17
-
18
- gem 'activerecord-jdbcmysql-adapter', :platform => :jruby
19
- gem 'activerecord-jdbcpostgresql-adapter', :platform => :jruby
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Makara
2
2
 
3
- [![Build Status](https://travis-ci.org/taskrabbit/makara.png?branch=master)](https://travis-ci.org/taskrabbit/makara)
3
+ ![Build Status](https://github.com/instacart/makara/workflows/CI/badge.svg)
4
+ [![Gem Version](https://badge.fury.io/rb/makara.svg)](https://badge.fury.io/rb/makara)
4
5
  [![Code Climate](https://codeclimate.com/repos/526886a7f3ea00679b00cae6/badges/7905f7a000492a1078f7/gpa.png)](https://codeclimate.com/repos/526886a7f3ea00679b00cae6/feed)
5
6
 
6
7
 
data/Rakefile CHANGED
@@ -6,4 +6,4 @@ require 'rspec/core/rake_task'
6
6
  RSpec::Core::RakeTask.new(:spec) do |spec|
7
7
  spec.pattern = 'spec/**/*_spec.rb'
8
8
  end
9
- task :default => :spec
9
+ task default: :spec
@@ -0,0 +1,8 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem"s dependencies in makara.gemspec
4
+ gemspec path: "../"
5
+
6
+ gem "activerecord", "~> 5.2.0"
7
+
8
+ # gem "mysql2", "~> 0.4.10", platform: :ruby
@@ -0,0 +1,8 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem"s dependencies in makara.gemspec
4
+ gemspec path: "../"
5
+
6
+ gem "activerecord", "~> 6.0.0"
7
+
8
+ # gem "mysql2", "~> 0.4.10", platform: :ruby
@@ -0,0 +1,8 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem"s dependencies in makara.gemspec
4
+ gemspec path: "../"
5
+
6
+ gem "activerecord", "~> 6.1.0"
7
+
8
+ # gem "mysql2", "~> 0.4.10", platform: :ruby
@@ -0,0 +1,6 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem"s dependencies in makara.gemspec
4
+ gemspec path: "../"
5
+
6
+ gem "activerecord", github: "rails/rails", branch: "main"
@@ -2,24 +2,10 @@ require 'active_record/connection_adapters/makara_abstract_adapter'
2
2
  require 'active_record/connection_adapters/jdbcmysql_adapter'
3
3
  require 'active_record/connection_adapters/mysql2_makara_adapter'
4
4
 
5
- if ActiveRecord::VERSION::MAJOR >= 4
6
-
7
- module ActiveRecord
8
- module ConnectionHandling
9
- def jdbcmysql_makara_connection(config)
10
- mysql2_makara_connection(config)
11
- end
12
- end
13
- end
14
-
15
- else
16
-
17
- module ActiveRecord
18
- class Base
19
- def self.jdbcmysql_makara_connection(config)
20
- self.mysql2_makara_connection(config)
21
- end
5
+ module ActiveRecord
6
+ module ConnectionHandling
7
+ def jdbcmysql_makara_connection(config)
8
+ mysql2_makara_connection(config)
22
9
  end
23
10
  end
24
-
25
11
  end
@@ -2,24 +2,10 @@ require 'active_record/connection_adapters/makara_abstract_adapter'
2
2
  require 'active_record/connection_adapters/jdbcpostgresql_adapter'
3
3
  require 'active_record/connection_adapters/postgresql_makara_adapter'
4
4
 
5
- if ActiveRecord::VERSION::MAJOR >= 4
6
-
7
- module ActiveRecord
8
- module ConnectionHandling
9
- def jdbcpostgresql_makara_connection(config)
10
- postgresql_makara_connection(config)
11
- end
12
- end
13
- end
14
-
15
- else
16
-
17
- module ActiveRecord
18
- class Base
19
- def self.jdbcpostgresql_makara_connection(config)
20
- self.postgresql_makara_connection(config)
21
- end
5
+ module ActiveRecord
6
+ module ConnectionHandling
7
+ def jdbcpostgresql_makara_connection(config)
8
+ postgresql_makara_connection(config)
22
9
  end
23
10
  end
24
-
25
11
  end
@@ -4,18 +4,13 @@ require 'makara'
4
4
  module ActiveRecord
5
5
  module ConnectionAdapters
6
6
  class MakaraAbstractAdapter < ::Makara::Proxy
7
-
8
-
9
7
  class ErrorHandler < ::Makara::ErrorHandler
10
-
11
-
12
8
  HARSH_ERRORS = [
13
9
  'ActiveRecord::RecordNotUnique',
14
10
  'ActiveRecord::InvalidForeignKey',
15
11
  'Makara::Errors::BlacklistConnection'
16
12
  ].map(&:freeze).freeze
17
13
 
18
-
19
14
  CONNECTION_MATCHERS = [
20
15
  /(closed|lost|no|terminating|terminated)\s?([^\s]+)?\sconnection/,
21
16
  /gone away/,
@@ -32,11 +27,8 @@ module ActiveRecord
32
27
  /the database system is (starting|shutting)/
33
28
  ].map(&:freeze).freeze
34
29
 
35
-
36
30
  def handle(connection)
37
-
38
31
  yield
39
-
40
32
  rescue Exception => e
41
33
  # do it via class name to avoid version-specific constant dependencies
42
34
  case e.class.name
@@ -49,20 +41,16 @@ module ActiveRecord
49
41
  harshly(e)
50
42
  end
51
43
  end
52
-
53
44
  end
54
45
 
55
-
56
46
  def harsh_errors
57
47
  HARSH_ERRORS
58
48
  end
59
49
 
60
-
61
50
  def connection_matchers
62
51
  CONNECTION_MATCHERS
63
52
  end
64
53
 
65
-
66
54
  def connection_message?(message)
67
55
  message = message.to_s.downcase
68
56
 
@@ -74,7 +62,6 @@ module ActiveRecord
74
62
  end
75
63
  end
76
64
 
77
-
78
65
  def custom_error_message?(connection, message)
79
66
  custom_error_matchers = connection._makara_custom_error_matchers
80
67
  return false if custom_error_matchers.empty?
@@ -82,7 +69,6 @@ module ActiveRecord
82
69
  message = message.to_s
83
70
 
84
71
  custom_error_matchers.each do |matcher|
85
-
86
72
  if matcher.is_a?(String)
87
73
 
88
74
  # accept strings that look like "/.../" as a regex
@@ -101,54 +87,43 @@ module ActiveRecord
101
87
 
102
88
  false
103
89
  end
104
-
105
-
106
90
  end
107
91
 
108
-
109
92
  hijack_method :execute, :exec_query, :exec_no_cache, :exec_cache, :transaction
110
93
  send_to_all :connect, :reconnect!, :verify!, :clear_cache!, :reset!
111
94
 
112
95
  control_method :close, :steal!, :expire, :lease, :in_use?, :owner, :schema_cache, :pool=, :pool,
113
96
  :schema_cache=, :lock, :seconds_idle, :==
114
97
 
115
-
116
98
  SQL_MASTER_MATCHERS = [/\A\s*select.+for update\Z/i, /select.+lock in share mode\Z/i, /\A\s*select.+(nextval|currval|lastval|get_lock|release_lock|pg_advisory_lock|pg_advisory_unlock)\(/i].map(&:freeze).freeze
117
99
  SQL_SLAVE_MATCHERS = [/\A\s*(select|with.+\)\s*select)\s/i].map(&:freeze).freeze
118
100
  SQL_ALL_MATCHERS = [/\A\s*set\s/i].map(&:freeze).freeze
119
101
  SQL_SKIP_STICKINESS_MATCHERS = [/\A\s*show\s([\w]+\s)?(field|table|database|schema|view|index)(es|s)?/i, /\A\s*(set|describe|explain|pragma)\s/i].map(&:freeze).freeze
120
102
 
121
-
122
103
  def sql_master_matchers
123
104
  SQL_MASTER_MATCHERS
124
105
  end
125
106
 
126
-
127
107
  def sql_slave_matchers
128
108
  SQL_SLAVE_MATCHERS
129
109
  end
130
110
 
131
-
132
111
  def sql_all_matchers
133
112
  SQL_ALL_MATCHERS
134
113
  end
135
114
 
136
-
137
115
  def sql_skip_stickiness_matchers
138
116
  SQL_SKIP_STICKINESS_MATCHERS
139
117
  end
140
118
 
141
-
142
119
  def initialize(config)
143
120
  @error_handler = ::ActiveRecord::ConnectionAdapters::MakaraAbstractAdapter::ErrorHandler.new
144
121
  @control = ActiveRecordPoolControl.new(self)
145
122
  super(config)
146
123
  end
147
124
 
148
-
149
125
  protected
150
126
 
151
-
152
127
  def appropriate_connection(method_name, args, &block)
153
128
  if needed_by_all?(method_name, args)
154
129
 
@@ -169,29 +144,28 @@ module ActiveRecord
169
144
  end
170
145
  end
171
146
 
172
-
173
147
  def should_stick?(method_name, args)
174
148
  sql = coerce_query_to_sql_string(args.first)
175
149
  return false if sql_skip_stickiness_matchers.any?{|m| sql =~ m }
150
+
176
151
  super
177
152
  end
178
153
 
179
-
180
154
  def needed_by_all?(method_name, args)
181
155
  sql = coerce_query_to_sql_string(args.first)
182
156
  return true if sql_all_matchers.any?{|m| sql =~ m }
157
+
183
158
  false
184
159
  end
185
160
 
186
-
187
161
  def needs_master?(method_name, args)
188
162
  sql = coerce_query_to_sql_string(args.first)
189
163
  return true if sql_master_matchers.any?{|m| sql =~ m }
190
164
  return false if sql_slave_matchers.any?{|m| sql =~ m }
165
+
191
166
  true
192
167
  end
193
168
 
194
-
195
169
  def coerce_query_to_sql_string(sql_or_arel)
196
170
  if sql_or_arel.respond_to?(:to_sql)
197
171
  sql_or_arel.to_sql
@@ -200,13 +174,11 @@ module ActiveRecord
200
174
  end
201
175
  end
202
176
 
203
-
204
177
  def connection_for(config)
205
178
  config = Makara::ConfigParser.merge_and_resolve_default_url_config(config)
206
179
  active_record_connection_for(config)
207
180
  end
208
181
 
209
-
210
182
  def active_record_connection_for(config)
211
183
  raise NotImplementedError
212
184
  end
@@ -2,24 +2,10 @@ require 'active_record/connection_adapters/makara_abstract_adapter'
2
2
  require 'active_record/connection_adapters/jdbcmysql_adapter'
3
3
  require 'active_record/connection_adapters/makara_mysql2_adapter'
4
4
 
5
- if ActiveRecord::VERSION::MAJOR >= 4
6
-
7
- module ActiveRecord
8
- module ConnectionHandling
9
- def makara_jdbcmysql_connection(config)
10
- makara_mysql2_connection(config)
11
- end
12
- end
13
- end
14
-
15
- else
16
-
17
- module ActiveRecord
18
- class Base
19
- def self.makara_jdbcmysql_connection(config)
20
- self.makara_mysql2_connection(config)
21
- end
5
+ module ActiveRecord
6
+ module ConnectionHandling
7
+ def makara_jdbcmysql_connection(config)
8
+ makara_mysql2_connection(config)
22
9
  end
23
10
  end
24
-
25
11
  end
@@ -2,24 +2,10 @@ require 'active_record/connection_adapters/makara_abstract_adapter'
2
2
  require 'active_record/connection_adapters/jdbcpostgresql_adapter'
3
3
  require 'active_record/connection_adapters/makara_postgresql_adapter'
4
4
 
5
- if ActiveRecord::VERSION::MAJOR >= 4
6
-
7
- module ActiveRecord
8
- module ConnectionHandling
9
- def makara_jdbcpostgresql_connection(config)
10
- makara_postgresql_connection(config)
11
- end
12
- end
13
- end
14
-
15
- else
16
-
17
- module ActiveRecord
18
- class Base
19
- def self.makara_jdbcpostgresql_connection(config)
20
- self.makara_postgresql_connection(config)
21
- end
5
+ module ActiveRecord
6
+ module ConnectionHandling
7
+ def makara_jdbcpostgresql_connection(config)
8
+ makara_postgresql_connection(config)
22
9
  end
23
10
  end
24
-
25
11
  end
@@ -1,32 +1,17 @@
1
1
  require 'active_record/connection_adapters/makara_abstract_adapter'
2
2
  require 'active_record/connection_adapters/mysql2_adapter'
3
3
 
4
- if ActiveRecord::VERSION::MAJOR >= 4
5
-
6
- module ActiveRecord
7
- module ConnectionHandling
8
- def makara_mysql2_connection(config)
9
- ActiveRecord::ConnectionAdapters::MakaraMysql2Adapter.new(config)
10
- end
11
- end
12
- end
13
-
14
- else
15
-
16
- module ActiveRecord
17
- class Base
18
- def self.makara_mysql2_connection(config)
19
- ActiveRecord::ConnectionAdapters::MakaraMysql2Adapter.new(config)
20
- end
4
+ module ActiveRecord
5
+ module ConnectionHandling
6
+ def makara_mysql2_connection(config)
7
+ ActiveRecord::ConnectionAdapters::MakaraMysql2Adapter.new(config)
21
8
  end
22
9
  end
23
-
24
10
  end
25
11
 
26
12
  module ActiveRecord
27
13
  module ConnectionAdapters
28
14
  class MakaraMysql2Adapter < ActiveRecord::ConnectionAdapters::MakaraAbstractAdapter
29
-
30
15
  class << self
31
16
  def visitor_for(*args)
32
17
  ActiveRecord::ConnectionAdapters::Mysql2Adapter.visitor_for(*args)
@@ -38,7 +23,6 @@ module ActiveRecord
38
23
  def active_record_connection_for(config)
39
24
  ::ActiveRecord::Base.mysql2_connection(config)
40
25
  end
41
-
42
26
  end
43
27
  end
44
28
  end
@@ -1,29 +1,14 @@
1
1
  require 'active_record/connection_adapters/makara_abstract_adapter'
2
2
  require 'active_record/connection_adapters/postgis_adapter'
3
3
 
4
- if ActiveRecord::VERSION::MAJOR >= 4
5
-
6
- module ActiveRecord
7
- module ConnectionHandling
8
- def makara_postgis_connection(config)
9
- ActiveRecord::ConnectionAdapters::MakaraPostgisAdapter.new(config)
10
- end
11
- end
12
- end
13
-
14
- else
15
-
16
- module ActiveRecord
17
- class Base
18
- def self.makara_postgis_connection(config)
19
- ActiveRecord::ConnectionAdapters::MakaraPostgisAdapter.new(config)
20
- end
4
+ module ActiveRecord
5
+ module ConnectionHandling
6
+ def makara_postgis_connection(config)
7
+ ActiveRecord::ConnectionAdapters::MakaraPostgisAdapter.new(config)
21
8
  end
22
9
  end
23
-
24
10
  end
25
11
 
26
-
27
12
  module ActiveRecord
28
13
  module ConnectionAdapters
29
14
  class MakaraPostgisAdapter < ActiveRecord::ConnectionAdapters::MakaraAbstractAdapter