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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a936204a697130ba6be50b69f69a53f33a91bce7
4
- data.tar.gz: 7b72a4a62dcbceb164fdd6abeed448d2671e46cd
3
+ metadata.gz: d5cd5ca699c63224bf641cf3e358137e6ded9a4c
4
+ data.tar.gz: 04e46ea2bf9ce3bca28cf96e94e6c8b73321e447
5
5
  SHA512:
6
- metadata.gz: 9247780b056dc9429814aca02b1340d910b012fa11a749a666faacd3537162356932d5cae20d1a1fee33f55923ffb69011f175de2bf887a995f05c6c1b74dfef
7
- data.tar.gz: 17ee0213ab9a305b612486558f0a6db1e32be0f699b3ca87c36a39490776d40dc663acb6f1e3f2ef22b03f7b238a78649bdab927e9a4fa6f7447ec398fa36861
6
+ metadata.gz: b39b59c2cfaefa4874fa2072b1eb128042c526690e12beb211f477b3fdf35ea78a0a838e1f98e43f46fba6ffd3d286e71e0ea855695a8c1b0acd14a7bb95fe3e
7
+ data.tar.gz: e33abeaa78ef7d331c02eac7f2538bc3c0837b388f2cbb4e20cdabb7b04fa2f7bcad0ef4e2991d5c4fcd0810138f958a47436d95a54aea6e25a866caa51ed843
@@ -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.1.10
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.1.10
31
- gemfile: gemfiles/activerecord_5.0.gemfile
32
- - rvm: 2.1.10
33
- gemfile: gemfiles/activerecord_2.3.gemfile
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.columns = columns_for(name)
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
- table_def = @tables[table_name]
233
- table_def ? table_def.columns : []
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
- attr_writer :columns
5
- def rows
6
- []
7
- end
4
+ attr_reader :column_types
5
+
6
+ def bind_column_meta(columns)
7
+ @columns = columns
8
+ return if columns.empty?
8
9
 
9
- def column_types
10
- columns.map{|col| col.type}
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
@@ -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
@@ -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
@@ -1,3 +1,3 @@
1
1
  module NullDB
2
- VERSION = "0.3.8"
2
+ VERSION = "0.3.9"
3
3
  end
@@ -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.8
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-02-06 00:00:00.000000000 Z
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