activerecord-nulldb-adapter 0.3.8 → 0.3.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +12 -10
- data/CHANGES.md +7 -0
- data/lib/active_record/connection_adapters/nulldb_adapter/core.rb +30 -3
- data/lib/active_record/connection_adapters/nulldb_adapter/empty_result.rb +18 -6
- data/lib/nulldb/core.rb +3 -0
- data/lib/nulldb/extensions.rb +1 -12
- data/lib/nulldb/version.rb +1 -1
- data/spec/nulldb_spec.rb +11 -0
- metadata +2 -4
- data/gemfiles/activerecord_3.0.gemfile +0 -16
- data/gemfiles/activerecord_3.1.gemfile +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d5cd5ca699c63224bf641cf3e358137e6ded9a4c
|
4
|
+
data.tar.gz: 04e46ea2bf9ce3bca28cf96e94e6c8b73321e447
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b39b59c2cfaefa4874fa2072b1eb128042c526690e12beb211f477b3fdf35ea78a0a838e1f98e43f46fba6ffd3d286e71e0ea855695a8c1b0acd14a7bb95fe3e
|
7
|
+
data.tar.gz: e33abeaa78ef7d331c02eac7f2538bc3c0837b388f2cbb4e20cdabb7b04fa2f7bcad0ef4e2991d5c4fcd0810138f958a47436d95a54aea6e25a866caa51ed843
|
data/.travis.yml
CHANGED
@@ -5,9 +5,9 @@ sudo: false
|
|
5
5
|
|
6
6
|
rvm:
|
7
7
|
- 1.9.3
|
8
|
-
- 2.1.10
|
9
8
|
- 2.2.5
|
10
9
|
- 2.3.1
|
10
|
+
- 2.4
|
11
11
|
- jruby
|
12
12
|
- rbx
|
13
13
|
|
@@ -19,27 +19,29 @@ matrix:
|
|
19
19
|
exclude:
|
20
20
|
- rvm: 1.9.3
|
21
21
|
gemfile: gemfiles/activerecord_master.gemfile
|
22
|
-
- rvm: 2.
|
22
|
+
- rvm: 2.2.5
|
23
|
+
gemfile: gemfiles/activerecord_master.gemfile
|
24
|
+
- rvm: 2.3.1
|
23
25
|
gemfile: gemfiles/activerecord_master.gemfile
|
24
26
|
- rvm: 1.9.3
|
25
27
|
gemfile: gemfiles/activerecord_5.1.gemfile
|
26
|
-
- rvm: 2.1.10
|
27
|
-
gemfile: gemfiles/activerecord_5.1.gemfile
|
28
28
|
- rvm: 1.9.3
|
29
29
|
gemfile: gemfiles/activerecord_5.0.gemfile
|
30
|
-
- rvm: 2.
|
31
|
-
gemfile: gemfiles/
|
32
|
-
- rvm: 2.
|
33
|
-
gemfile: gemfiles/
|
30
|
+
- rvm: 2.4
|
31
|
+
gemfile: gemfiles/activerecord_4.1.gemfile
|
32
|
+
- rvm: 2.4
|
33
|
+
gemfile: gemfiles/activerecord_4.0.gemfile
|
34
|
+
- rvm: 2.4
|
35
|
+
gemfile: gemfiles/activerecord_3.2.gemfile
|
34
36
|
- rvm: 2.2.5
|
35
37
|
gemfile: gemfiles/activerecord_2.3.gemfile
|
36
38
|
- rvm: 2.3.1
|
37
39
|
gemfile: gemfiles/activerecord_2.3.gemfile
|
40
|
+
- rvm: 2.4
|
41
|
+
gemfile: gemfiles/activerecord_2.3.gemfile
|
38
42
|
|
39
43
|
gemfile:
|
40
44
|
- gemfiles/activerecord_2.3.gemfile
|
41
|
-
- gemfiles/activerecord_3.0.gemfile
|
42
|
-
- gemfiles/activerecord_3.1.gemfile
|
43
45
|
- gemfiles/activerecord_3.2.gemfile
|
44
46
|
- gemfiles/activerecord_4.0.gemfile
|
45
47
|
- gemfiles/activerecord_4.1.gemfile
|
data/CHANGES.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
0.3.9 (2018-07-07)
|
2
|
+
-----------
|
3
|
+
- Fix broken count
|
4
|
+
- Avoid monkey patching Schema.define
|
5
|
+
- Support ruby 2.4 (drop support for ruby 2.1 and rails 3.0/3.1)
|
6
|
+
- Support custom TableDefinition (useful for postgres)
|
7
|
+
|
1
8
|
0.3.8 (2018-02-06)
|
2
9
|
-----------
|
3
10
|
- Adds support for ActiveRecord Edge (6.0)
|
@@ -15,6 +15,8 @@ class ActiveRecord::ConnectionAdapters::NullDBAdapter < ActiveRecord::Connection
|
|
15
15
|
# Recognized options:
|
16
16
|
#
|
17
17
|
# [+:schema+] path to the schema file, relative to Rails.root
|
18
|
+
# [+:table_definition_class_name+] table definition class
|
19
|
+
# (e.g. ActiveRecord::ConnectionAdapters::PostgreSQL::TableDefinition for Postgres) or nil.
|
18
20
|
def initialize(config={})
|
19
21
|
@log = StringIO.new
|
20
22
|
@logger = Logger.new(@log)
|
@@ -25,6 +27,15 @@ class ActiveRecord::ConnectionAdapters::NullDBAdapter < ActiveRecord::Connection
|
|
25
27
|
@config = config.merge(:adapter => :nulldb)
|
26
28
|
super *initialize_args
|
27
29
|
@visitor ||= Arel::Visitors::ToSql.new self if defined?(Arel::Visitors::ToSql)
|
30
|
+
|
31
|
+
if config[:table_definition_class_name]
|
32
|
+
ActiveRecord::ConnectionAdapters::NullDBAdapter.send(:remove_const, 'TableDefinition')
|
33
|
+
ActiveRecord::ConnectionAdapters::NullDBAdapter.const_set('TableDefinition',
|
34
|
+
self.class.const_get(config[:table_definition_class_name]))
|
35
|
+
end
|
36
|
+
|
37
|
+
register_types unless NullDB::LEGACY_ACTIVERECORD || \
|
38
|
+
ActiveRecord::VERSION::MAJOR < 4
|
28
39
|
end
|
29
40
|
|
30
41
|
# A log of every statement that has been "executed" by this connection adapter
|
@@ -221,7 +232,7 @@ class ActiveRecord::ConnectionAdapters::NullDBAdapter < ActiveRecord::Connection
|
|
221
232
|
|
222
233
|
def select(statement, name = nil, binds = [])
|
223
234
|
EmptyResult.new.tap do |r|
|
224
|
-
r.
|
235
|
+
r.bind_column_meta(columns_for(name))
|
225
236
|
self.execution_log << Statement.new(entry_point, statement)
|
226
237
|
end
|
227
238
|
end
|
@@ -229,8 +240,9 @@ class ActiveRecord::ConnectionAdapters::NullDBAdapter < ActiveRecord::Connection
|
|
229
240
|
private
|
230
241
|
|
231
242
|
def columns_for(table_name)
|
232
|
-
|
233
|
-
|
243
|
+
table_meta = @tables[table_name]
|
244
|
+
return [] unless table_meta
|
245
|
+
table_meta.columns
|
234
246
|
end
|
235
247
|
|
236
248
|
def next_unique_id
|
@@ -322,4 +334,19 @@ class ActiveRecord::ConnectionAdapters::NullDBAdapter < ActiveRecord::Connection
|
|
322
334
|
[nil, @logger]
|
323
335
|
end
|
324
336
|
|
337
|
+
# 4.2 introduced ActiveRecord::Type
|
338
|
+
# https://github.com/rails/rails/tree/4-2-stable/activerecord/lib/active_record
|
339
|
+
def register_types
|
340
|
+
if ActiveRecord::VERSION::MAJOR < 5
|
341
|
+
type_map.register_type(:primary_key, ActiveRecord::Type::Integer.new)
|
342
|
+
else
|
343
|
+
require 'active_model/type'
|
344
|
+
ActiveRecord::Type.register(
|
345
|
+
:primary_key,
|
346
|
+
ActiveModel::Type::Integer,
|
347
|
+
adapter: adapter_name,
|
348
|
+
override: true
|
349
|
+
)
|
350
|
+
end
|
351
|
+
end
|
325
352
|
end
|
@@ -1,26 +1,38 @@
|
|
1
1
|
class ActiveRecord::ConnectionAdapters::NullDBAdapter
|
2
2
|
|
3
3
|
class EmptyResult < Array
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
attr_reader :column_types
|
5
|
+
|
6
|
+
def bind_column_meta(columns)
|
7
|
+
@columns = columns
|
8
|
+
return if columns.empty?
|
8
9
|
|
9
|
-
|
10
|
-
|
10
|
+
@column_types = columns.reduce({}) do |ctypes, col|
|
11
|
+
ctypes[col.name] = ActiveRecord::Type.lookup(col.type)
|
12
|
+
ctypes
|
13
|
+
end
|
11
14
|
end
|
12
15
|
|
13
16
|
def columns
|
14
17
|
@columns ||= []
|
15
18
|
end
|
16
19
|
|
20
|
+
def column_types
|
21
|
+
@column_types ||= {}
|
22
|
+
end
|
23
|
+
|
17
24
|
def cast_values(type_overrides = nil)
|
18
25
|
rows
|
19
26
|
end
|
20
27
|
|
28
|
+
def rows
|
29
|
+
[]
|
30
|
+
end
|
31
|
+
|
21
32
|
def >(num)
|
22
33
|
rows.size > num
|
23
34
|
end
|
35
|
+
|
24
36
|
end
|
25
37
|
|
26
38
|
end
|
data/lib/nulldb/core.rb
CHANGED
@@ -3,6 +3,9 @@ require 'active_support/deprecation'
|
|
3
3
|
require 'active_record/connection_adapters/nulldb_adapter'
|
4
4
|
|
5
5
|
module NullDB
|
6
|
+
LEGACY_ACTIVERECORD =
|
7
|
+
Gem::Version.new(ActiveRecord::VERSION::STRING) < Gem::Version.new('4.2.0')
|
8
|
+
|
6
9
|
class Configuration < Struct.new(:project_root); end
|
7
10
|
|
8
11
|
class << self
|
data/lib/nulldb/extensions.rb
CHANGED
@@ -28,15 +28,4 @@ class ActiveRecord::Base
|
|
28
28
|
def self.nulldb_connection(config)
|
29
29
|
ActiveRecord::ConnectionAdapters::NullDBAdapter.new(config)
|
30
30
|
end
|
31
|
-
end
|
32
|
-
|
33
|
-
|
34
|
-
module ActiveRecord
|
35
|
-
# Just make sure you have the latest version of your schema
|
36
|
-
superclass = ActiveRecord::VERSION::MAJOR >= 5 ? Migration.public_send(:[], "#{ActiveRecord::VERSION::MAJOR}.#{ActiveRecord::VERSION::MINOR}".to_f) : Migration
|
37
|
-
class Schema < superclass
|
38
|
-
def self.define(info={}, &block)
|
39
|
-
instance_eval(&block)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
31
|
+
end
|
data/lib/nulldb/version.rb
CHANGED
data/spec/nulldb_spec.rb
CHANGED
@@ -287,6 +287,10 @@ describe "NullDB" do
|
|
287
287
|
expect( ActiveRecord::Base ).to receive(:connection_pool).and_raise(ActiveRecord::ConnectionNotEstablished)
|
288
288
|
expect { NullDB.nullify }.to_not raise_error
|
289
289
|
end
|
290
|
+
|
291
|
+
it 'should handle count queries' do
|
292
|
+
expect(Employee.count).to eql(0)
|
293
|
+
end
|
290
294
|
end
|
291
295
|
|
292
296
|
# need a fallback db for contextual nullification
|
@@ -334,6 +338,13 @@ describe 'adapter-specific extensions' do
|
|
334
338
|
end
|
335
339
|
}.to_not raise_error
|
336
340
|
end
|
341
|
+
|
342
|
+
if ActiveRecord::VERSION::MAJOR > 4
|
343
|
+
it 'registers a primary_key type' do
|
344
|
+
expect(ActiveRecord::Type.lookup(:primary_key, adapter: 'NullDB'))
|
345
|
+
.to be_a(ActiveModel::Type::Integer)
|
346
|
+
end
|
347
|
+
end
|
337
348
|
end
|
338
349
|
|
339
350
|
describe ActiveRecord::ConnectionAdapters::NullDBAdapter::EmptyResult do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-nulldb-adapter
|
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
|
- Avdi Grimm
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-
|
12
|
+
date: 2018-07-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|
@@ -129,8 +129,6 @@ files:
|
|
129
129
|
- Rakefile
|
130
130
|
- activerecord-nulldb-adapter.gemspec
|
131
131
|
- gemfiles/activerecord_2.3.gemfile
|
132
|
-
- gemfiles/activerecord_3.0.gemfile
|
133
|
-
- gemfiles/activerecord_3.1.gemfile
|
134
132
|
- gemfiles/activerecord_3.2.gemfile
|
135
133
|
- gemfiles/activerecord_4.0.gemfile
|
136
134
|
- gemfiles/activerecord_4.1.gemfile
|
@@ -1,16 +0,0 @@
|
|
1
|
-
# This file was generated by Appraisal
|
2
|
-
|
3
|
-
source "https://rubygems.org"
|
4
|
-
|
5
|
-
gem "activerecord", "~> 3.0.0"
|
6
|
-
|
7
|
-
group :development, :test do
|
8
|
-
gem "spec"
|
9
|
-
gem "rspec", ">= 1.2.9"
|
10
|
-
gem "rake"
|
11
|
-
end
|
12
|
-
|
13
|
-
group :development do
|
14
|
-
gem "appraisal"
|
15
|
-
gem "simplecov", :require => false
|
16
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
# This file was generated by Appraisal
|
2
|
-
|
3
|
-
source "https://rubygems.org"
|
4
|
-
|
5
|
-
gem "activerecord", "~> 3.1.0"
|
6
|
-
|
7
|
-
group :development, :test do
|
8
|
-
gem "spec"
|
9
|
-
gem "rspec", ">= 1.2.9"
|
10
|
-
gem "rake"
|
11
|
-
end
|
12
|
-
|
13
|
-
group :development do
|
14
|
-
gem "appraisal"
|
15
|
-
gem "simplecov", :require => false
|
16
|
-
end
|