activerecord-nulldb-adapter 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 +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
|