makara 0.3.8 → 0.3.9
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 +4 -4
- data/.travis.yml +1 -0
- data/CHANGELOG.md +11 -0
- data/Gemfile +2 -1
- data/gemfiles/ar30.gemfile +2 -0
- data/gemfiles/ar31.gemfile +2 -0
- data/gemfiles/ar32.gemfile +2 -0
- data/gemfiles/ar40.gemfile +2 -0
- data/gemfiles/ar41.gemfile +2 -0
- data/gemfiles/ar42.gemfile +2 -0
- data/lib/active_record/connection_adapters/makara_postgis_adapter.rb +41 -0
- data/lib/makara/version.rb +1 -1
- data/spec/active_record/connection_adapters/makara_postgis_adapter_spec.rb +150 -0
- data/spec/active_record/connection_adapters/makara_postgresql_adapter_spec.rb +2 -2
- data/spec/config_parser_spec.rb +6 -12
- data/spec/support/postgis_database.yml +13 -0
- data/spec/support/postgis_schema.rb +8 -0
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2285d0c3c177997ec9e9d8568225f3a1ed1bdf28
|
4
|
+
data.tar.gz: 953d024813b8bd5bae579665a3988c5770f63d38
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dc7a2f84b22a57f83d1eb3ef4e615975e405f97b150b6b8d6c4e39b4833b4daa28036f7d838cd2062e64c4cc1ca015f519cf0d91c6c3a8f5f25ea85229e4e3e6
|
7
|
+
data.tar.gz: 528f91cff15ebd34a460d4f79f01679dd457641904df4834ae8179d735a461d23e8dfdae59971bffb019e62aaaabacb8aa36f440bd2165e5ca2835e58a69f8e4
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,17 @@
|
|
1
1
|
# Change Log
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
|
4
|
+
## v0.3.8 - 2016-07-11
|
5
|
+
|
6
|
+
[Full Changelog](https://github.com/taskrabbit/makara/compare/v0.3.7...v0.3.8)
|
7
|
+
|
8
|
+
Changed
|
9
|
+
- Rails 5.1 compatibility [#150](https://github.com/taskrabbit/makara/pull/150) Jeremy Daer
|
10
|
+
- Minimize redundant context cache requests [#157](https://github.com/taskrabbit/makara/issues/157) Greg Patrick
|
11
|
+
- thread-local cache for previous context stickiness [#158](https://github.com/taskrabbit/makara/issues/158) Jeremy Daer
|
12
|
+
- Configurable cookie options [#159](https://github.com/taskrabbit/makara/pull/159) Jeremy Daer
|
13
|
+
- Test against Rails 5.x and Ruby 2.x [#160](https://github.com/taskrabbit/makara/pull/160) Jeremy Daer
|
14
|
+
|
4
15
|
## v0.3.7 - 2016-09-22
|
5
16
|
|
6
17
|
[Full Changelog](https://github.com/taskrabbit/makara/compare/v0.3.6...v0.3.7)
|
data/Gemfile
CHANGED
@@ -12,7 +12,8 @@ gem 'rack', '1.6.0'
|
|
12
12
|
|
13
13
|
gem 'mysql2', :platform => :ruby
|
14
14
|
gem 'pg', :platform => :ruby
|
15
|
+
gem 'activerecord-postgis-adapter', :platform => :ruby
|
16
|
+
gem 'rgeo', :platform => :ruby
|
15
17
|
|
16
18
|
gem 'activerecord-jdbcmysql-adapter', :platform => :jruby
|
17
19
|
gem 'activerecord-jdbcpostgresql-adapter', :platform => :jruby
|
18
|
-
|
data/gemfiles/ar30.gemfile
CHANGED
@@ -12,6 +12,8 @@ gem 'i18n', '~> 0.5.0'
|
|
12
12
|
gem 'mysql2', '0.2.11', :platform => :ruby
|
13
13
|
gem 'activerecord-jdbcmysql-adapter', :platform => :jruby
|
14
14
|
gem 'activerecord-jdbcpostgresql-adapter', :platform => :jruby
|
15
|
+
gem 'activerecord-postgis-adapter', :platform => :ruby
|
16
|
+
gem 'rgeo', :platform => :ruby
|
15
17
|
|
16
18
|
|
17
19
|
rmajor, rminor, rpatch = RUBY_VERSION.split(/[^\d]/)[0..2].map(&:to_i)
|
data/gemfiles/ar31.gemfile
CHANGED
@@ -12,6 +12,8 @@ gem 'i18n', '~> 0.6.0'
|
|
12
12
|
gem 'mysql2', '~> 0.3.10', :platform => :ruby
|
13
13
|
gem 'activerecord-jdbcmysql-adapter', :platform => :jruby
|
14
14
|
gem 'activerecord-jdbcpostgresql-adapter', :platform => :jruby
|
15
|
+
gem 'activerecord-postgis-adapter', :platform => :ruby
|
16
|
+
gem 'rgeo', :platform => :ruby
|
15
17
|
|
16
18
|
rmajor, rminor, rpatch = RUBY_VERSION.split(/[^\d]/)[0..2].map(&:to_i)
|
17
19
|
|
data/gemfiles/ar32.gemfile
CHANGED
@@ -12,6 +12,8 @@ gem 'i18n', '~> 0.6.0'
|
|
12
12
|
gem 'mysql2', '~> 0.3.10', :platform => :ruby
|
13
13
|
gem 'activerecord-jdbcmysql-adapter', :platform => :jruby
|
14
14
|
gem 'activerecord-jdbcpostgresql-adapter', :platform => :jruby
|
15
|
+
gem 'activerecord-postgis-adapter', :platform => :ruby
|
16
|
+
gem 'rgeo', :platform => :ruby
|
15
17
|
|
16
18
|
rmajor, rminor, rpatch = RUBY_VERSION.split(/[^\d]/)[0..2].map(&:to_i)
|
17
19
|
|
data/gemfiles/ar40.gemfile
CHANGED
@@ -13,3 +13,5 @@ gem 'mysql2', '~> 0.3.10', :platform => :ruby
|
|
13
13
|
gem 'activerecord-jdbcmysql-adapter', :platform => :jruby
|
14
14
|
gem 'pg', :platform => :ruby
|
15
15
|
gem 'activerecord-jdbcpostgresql-adapter', :platform => :jruby
|
16
|
+
gem 'activerecord-postgis-adapter', :platform => :ruby
|
17
|
+
gem 'rgeo', :platform => :ruby
|
data/gemfiles/ar41.gemfile
CHANGED
@@ -13,3 +13,5 @@ gem 'mysql2', '~> 0.3.10', :platform => :ruby
|
|
13
13
|
gem 'activerecord-jdbcmysql-adapter', :platform => :jruby
|
14
14
|
gem 'pg', :platform => :ruby
|
15
15
|
gem 'activerecord-jdbcpostgresql-adapter', :platform => :jruby
|
16
|
+
gem 'activerecord-postgis-adapter', :platform => :ruby
|
17
|
+
gem 'rgeo', :platform => :ruby
|
data/gemfiles/ar42.gemfile
CHANGED
@@ -13,3 +13,5 @@ gem 'mysql2', '~> 0.3.10', :platform => :ruby
|
|
13
13
|
gem 'activerecord-jdbcmysql-adapter', :platform => :jruby
|
14
14
|
gem 'pg', :platform => :ruby
|
15
15
|
gem 'activerecord-jdbcpostgresql-adapter', :platform => :jruby
|
16
|
+
gem 'activerecord-postgis-adapter', :platform => :ruby
|
17
|
+
gem 'rgeo', :platform => :ruby
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'active_record/connection_adapters/makara_abstract_adapter'
|
2
|
+
require 'active_record/connection_adapters/postgis_adapter'
|
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
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
module ActiveRecord
|
28
|
+
module ConnectionAdapters
|
29
|
+
class MakaraPostgisAdapter < ActiveRecord::ConnectionAdapters::MakaraAbstractAdapter
|
30
|
+
def self.visitor_for(*args)
|
31
|
+
ActiveRecord::ConnectionAdapters::PostGISAdapter.visitor_for(*args)
|
32
|
+
end
|
33
|
+
|
34
|
+
protected
|
35
|
+
|
36
|
+
def active_record_connection_for(config)
|
37
|
+
::ActiveRecord::Base.postgis_connection(config)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/lib/makara/version.rb
CHANGED
@@ -0,0 +1,150 @@
|
|
1
|
+
# RGeo doesn't play well with JRuby and to avoid complicated test setup
|
2
|
+
# we're only testing ActiveRecord version ~> 4.2
|
3
|
+
if RUBY_ENGINE == 'ruby' &&
|
4
|
+
ActiveRecord::VERSION::MAJOR == 4 &&
|
5
|
+
ActiveRecord::VERSION::MINOR >= 2
|
6
|
+
|
7
|
+
require 'spec_helper'
|
8
|
+
require 'rgeo'
|
9
|
+
require 'activerecord-postgis-adapter'
|
10
|
+
require 'active_record/connection_adapters/postgis_adapter'
|
11
|
+
|
12
|
+
describe 'MakaraPostgisAdapter' do
|
13
|
+
let(:db_username){ ENV['TRAVIS'] ? 'postgres' : `whoami`.chomp }
|
14
|
+
|
15
|
+
let(:config) do
|
16
|
+
base = YAML.load_file(File.expand_path('spec/support/postgis_database.yml'))['test']
|
17
|
+
base['username'] = db_username
|
18
|
+
base
|
19
|
+
end
|
20
|
+
|
21
|
+
let(:connection) { ActiveRecord::Base.connection }
|
22
|
+
|
23
|
+
before :each do
|
24
|
+
ActiveRecord::Base.clear_all_connections!
|
25
|
+
change_context
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should allow a connection to be established' do
|
29
|
+
ActiveRecord::Base.establish_connection(config)
|
30
|
+
expect(ActiveRecord::Base.connection)
|
31
|
+
.to be_instance_of(ActiveRecord::ConnectionAdapters::MakaraPostgisAdapter)
|
32
|
+
end
|
33
|
+
|
34
|
+
context 'with the connection established and schema loaded' do
|
35
|
+
before do
|
36
|
+
ActiveRecord::Base.establish_connection(config)
|
37
|
+
load(File.dirname(__FILE__) + '/../../support/schema.rb')
|
38
|
+
load(File.dirname(__FILE__) + '/../../support/postgis_schema.rb')
|
39
|
+
change_context
|
40
|
+
RGeo::ActiveRecord::SpatialFactoryStore.instance.tap do |config|
|
41
|
+
# By default, use the GEOS implementation for spatial columns.
|
42
|
+
config.default = RGeo::Geos.factory_generator
|
43
|
+
|
44
|
+
# But use a geographic implementation for point columns.
|
45
|
+
config.register(RGeo::Geographic.spherical_factory(srid: 4326), geo_type: "point")
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
let(:town_class) do
|
50
|
+
Class.new(ActiveRecord::Base) do
|
51
|
+
self.table_name = :towns
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'should have one master and two slaves' do
|
56
|
+
expect(connection.master_pool.connection_count).to eq(1)
|
57
|
+
expect(connection.slave_pool.connection_count).to eq(2)
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'should allow real queries to work' do
|
61
|
+
connection.execute('INSERT INTO users (name) VALUES (\'John\')')
|
62
|
+
|
63
|
+
connection.master_pool.connections.each do |master|
|
64
|
+
expect(master).to receive(:execute).never
|
65
|
+
end
|
66
|
+
|
67
|
+
change_context
|
68
|
+
res = connection.execute('SELECT name FROM users ORDER BY id DESC LIMIT 1')
|
69
|
+
|
70
|
+
expect(res.to_a[0]['name']).to eq('John')
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'should send SET operations to each connection' do
|
74
|
+
connection.master_pool.connections.each do |con|
|
75
|
+
expect(con).to receive(:execute).with("SET TimeZone = 'UTC'").once
|
76
|
+
end
|
77
|
+
|
78
|
+
connection.slave_pool.connections.each do |con|
|
79
|
+
expect(con).to receive(:execute).with("SET TimeZone = 'UTC'").once
|
80
|
+
end
|
81
|
+
connection.execute("SET TimeZone = 'UTC'")
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'should send reads to the slave' do
|
85
|
+
# ensure the next connection will be the first one
|
86
|
+
connection.slave_pool
|
87
|
+
.strategy
|
88
|
+
.instance_variable_set('@current_idx',
|
89
|
+
connection.slave_pool.connections.length)
|
90
|
+
|
91
|
+
con = connection.slave_pool.connections.first
|
92
|
+
expect(con).to receive(:execute).with('SELECT * FROM users').once
|
93
|
+
|
94
|
+
connection.execute('SELECT * FROM users')
|
95
|
+
end
|
96
|
+
|
97
|
+
it 'should send writes to master' do
|
98
|
+
con = connection.master_pool.connections.first
|
99
|
+
expect(con).to receive(:execute).with('UPDATE users SET name = "bob" WHERE id = 1')
|
100
|
+
connection.execute('UPDATE users SET name = "bob" WHERE id = 1')
|
101
|
+
end
|
102
|
+
|
103
|
+
it 'should interpret points correctly' do
|
104
|
+
town_class.create!(location: 'Point(1 2)')
|
105
|
+
town = town_class.last
|
106
|
+
expect(town.location.x).to eq 1
|
107
|
+
expect(town.location.y).to eq 2
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
context 'without live connections' do
|
112
|
+
it 'should raise errors on read or write' do
|
113
|
+
allow(ActiveRecord::Base).to receive(:postgis_connection).and_raise(StandardError.new('could not connect to server: Connection refused'))
|
114
|
+
|
115
|
+
ActiveRecord::Base.establish_connection(config)
|
116
|
+
expect { connection.execute('SELECT * FROM users') }.to raise_error(Makara::Errors::NoConnectionsAvailable)
|
117
|
+
expect { connection.execute('INSERT INTO users (name) VALUES (\'John\')') }.to raise_error(Makara::Errors::NoConnectionsAvailable)
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
context 'with only master connection' do
|
122
|
+
it 'should not raise errors on read and write' do
|
123
|
+
custom_config = config.deep_dup
|
124
|
+
custom_config['makara']['connections'].select{|h| h['role'] == 'slave' }.each{|h| h['port'] = '1'}
|
125
|
+
|
126
|
+
ActiveRecord::Base.establish_connection(custom_config)
|
127
|
+
load(File.dirname(__FILE__) + '/../../support/schema.rb')
|
128
|
+
|
129
|
+
connection.execute('SELECT * FROM users')
|
130
|
+
connection.execute('INSERT INTO users (name) VALUES (\'John\')')
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
context 'with only slave connection' do
|
135
|
+
it 'should raise error only on write' do
|
136
|
+
ActiveRecord::Base.establish_connection(config)
|
137
|
+
load(File.dirname(__FILE__) + '/../../support/schema.rb')
|
138
|
+
ActiveRecord::Base.clear_all_connections!
|
139
|
+
|
140
|
+
custom_config = config.deep_dup
|
141
|
+
custom_config['makara']['connections'].select{|h| h['role'] == 'master' }.each{|h| h['port'] = '1'}
|
142
|
+
|
143
|
+
ActiveRecord::Base.establish_connection(custom_config)
|
144
|
+
|
145
|
+
connection.execute('SELECT * FROM users')
|
146
|
+
expect { connection.execute('INSERT INTO users (name) VALUES (\'John\')') }.to raise_error(Makara::Errors::NoConnectionsAvailable)
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
@@ -5,11 +5,11 @@ describe 'MakaraPostgreSQLAdapter' do
|
|
5
5
|
|
6
6
|
let(:db_username){ ENV['TRAVIS'] ? 'postgres' : `whoami`.chomp }
|
7
7
|
|
8
|
-
let(:config)
|
8
|
+
let(:config) do
|
9
9
|
base = YAML.load_file(File.expand_path('spec/support/postgresql_database.yml'))['test']
|
10
10
|
base['username'] = db_username
|
11
11
|
base
|
12
|
-
|
12
|
+
end
|
13
13
|
|
14
14
|
let(:connection) { ActiveRecord::Base.connection }
|
15
15
|
|
data/spec/config_parser_spec.rb
CHANGED
@@ -97,8 +97,7 @@ describe Makara::ConfigParser do
|
|
97
97
|
:top_level => 'value',
|
98
98
|
:sticky => true,
|
99
99
|
:blacklist_duration => 30,
|
100
|
-
:master_ttl => 5
|
101
|
-
:sticky => true
|
100
|
+
:master_ttl => 5
|
102
101
|
}
|
103
102
|
])
|
104
103
|
expect(parser.slave_configs).to eq([
|
@@ -107,16 +106,14 @@ describe Makara::ConfigParser do
|
|
107
106
|
:top_level => 'value',
|
108
107
|
:sticky => true,
|
109
108
|
:blacklist_duration => 30,
|
110
|
-
:master_ttl => 5
|
111
|
-
:sticky => true
|
109
|
+
:master_ttl => 5
|
112
110
|
},
|
113
111
|
{
|
114
112
|
:name => 'slave2',
|
115
113
|
:top_level => 'value',
|
116
114
|
:sticky => true,
|
117
115
|
:blacklist_duration => 30,
|
118
|
-
:master_ttl => 5
|
119
|
-
:sticky => true
|
116
|
+
:master_ttl => 5
|
120
117
|
}
|
121
118
|
])
|
122
119
|
end
|
@@ -133,8 +130,7 @@ describe Makara::ConfigParser do
|
|
133
130
|
:top_level => 'value',
|
134
131
|
:sticky => true,
|
135
132
|
:blacklist_duration => 456,
|
136
|
-
:master_ttl => 5
|
137
|
-
:sticky => true
|
133
|
+
:master_ttl => 5
|
138
134
|
}
|
139
135
|
])
|
140
136
|
expect(parser.slave_configs).to eq([
|
@@ -143,16 +139,14 @@ describe Makara::ConfigParser do
|
|
143
139
|
:top_level => 'slave value',
|
144
140
|
:sticky => true,
|
145
141
|
:blacklist_duration => 123,
|
146
|
-
:master_ttl => 5
|
147
|
-
:sticky => true
|
142
|
+
:master_ttl => 5
|
148
143
|
},
|
149
144
|
{
|
150
145
|
:name => 'slave2',
|
151
146
|
:top_level => 'value',
|
152
147
|
:sticky => true,
|
153
148
|
:blacklist_duration => 123,
|
154
|
-
:master_ttl => 5
|
155
|
-
:sticky => true
|
149
|
+
:master_ttl => 5
|
156
150
|
}
|
157
151
|
])
|
158
152
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: makara
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Nelson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-08-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -55,6 +55,7 @@ files:
|
|
55
55
|
- lib/active_record/connection_adapters/makara_jdbcmysql_adapter.rb
|
56
56
|
- lib/active_record/connection_adapters/makara_jdbcpostgresql_adapter.rb
|
57
57
|
- lib/active_record/connection_adapters/makara_mysql2_adapter.rb
|
58
|
+
- lib/active_record/connection_adapters/makara_postgis_adapter.rb
|
58
59
|
- lib/active_record/connection_adapters/makara_postgresql_adapter.rb
|
59
60
|
- lib/active_record/connection_adapters/mysql2_makara_adapter.rb
|
60
61
|
- lib/active_record/connection_adapters/postgresql_makara_adapter.rb
|
@@ -84,6 +85,7 @@ files:
|
|
84
85
|
- spec/active_record/connection_adapters/makara_abstract_adapter_error_handling_spec.rb
|
85
86
|
- spec/active_record/connection_adapters/makara_abstract_adapter_spec.rb
|
86
87
|
- spec/active_record/connection_adapters/makara_mysql2_adapter_spec.rb
|
88
|
+
- spec/active_record/connection_adapters/makara_postgis_adapter_spec.rb
|
87
89
|
- spec/active_record/connection_adapters/makara_postgresql_adapter_spec.rb
|
88
90
|
- spec/cache_spec.rb
|
89
91
|
- spec/config_parser_spec.rb
|
@@ -101,6 +103,8 @@ files:
|
|
101
103
|
- spec/support/mysql2_database.yml
|
102
104
|
- spec/support/mysql2_database_with_custom_errors.yml
|
103
105
|
- spec/support/pool_extensions.rb
|
106
|
+
- spec/support/postgis_database.yml
|
107
|
+
- spec/support/postgis_schema.rb
|
104
108
|
- spec/support/postgresql_database.yml
|
105
109
|
- spec/support/proxy_extensions.rb
|
106
110
|
- spec/support/schema.rb
|
@@ -131,6 +135,7 @@ test_files:
|
|
131
135
|
- spec/active_record/connection_adapters/makara_abstract_adapter_error_handling_spec.rb
|
132
136
|
- spec/active_record/connection_adapters/makara_abstract_adapter_spec.rb
|
133
137
|
- spec/active_record/connection_adapters/makara_mysql2_adapter_spec.rb
|
138
|
+
- spec/active_record/connection_adapters/makara_postgis_adapter_spec.rb
|
134
139
|
- spec/active_record/connection_adapters/makara_postgresql_adapter_spec.rb
|
135
140
|
- spec/cache_spec.rb
|
136
141
|
- spec/config_parser_spec.rb
|
@@ -148,6 +153,8 @@ test_files:
|
|
148
153
|
- spec/support/mysql2_database.yml
|
149
154
|
- spec/support/mysql2_database_with_custom_errors.yml
|
150
155
|
- spec/support/pool_extensions.rb
|
156
|
+
- spec/support/postgis_database.yml
|
157
|
+
- spec/support/postgis_schema.rb
|
151
158
|
- spec/support/postgresql_database.yml
|
152
159
|
- spec/support/proxy_extensions.rb
|
153
160
|
- spec/support/schema.rb
|