activerecord-nulldb-adapter 0.3.6 → 0.3.7
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 +10 -0
- data/Appraisals +4 -0
- data/CHANGES.md +6 -0
- data/activerecord-nulldb-adapter.gemspec +1 -1
- data/gemfiles/activerecord_5.1.gemfile +16 -0
- data/gemfiles/activerecord_master.gemfile +18 -0
- data/lib/active_record/connection_adapters/nulldb_adapter/core.rb +25 -9
- data/lib/active_record/connection_adapters/nulldb_adapter/empty_result.rb +4 -0
- data/lib/nulldb/extensions.rb +1 -1
- data/spec/nulldb_spec.rb +14 -2
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 81d75c5def8b53125f8505b1cde22775cb4cbcbd
|
4
|
+
data.tar.gz: fa4c888a50ce9aacdaa58c628890319b35ea01bc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9cc5c7db63a7bb752dfcd962d939887bf985a4d0b41fe017ad2310535b0b6747d776ff29976508da9b2f83271c31d1fc77bc4d7a2d9897b8909af3148e13abd5
|
7
|
+
data.tar.gz: ef64f1a39cc7a96d1a5ea2efc1641a4f1019e23ecd5092bd6b100fafbc7eeac0c43c8716fc759cf00e270177d6dabbbfbf22ede67797e871a6ccb4bcfc1bedd6
|
data/.travis.yml
CHANGED
@@ -17,6 +17,14 @@ matrix:
|
|
17
17
|
- rvm: jruby
|
18
18
|
- rvm: rbx
|
19
19
|
exclude:
|
20
|
+
- rvm: 1.9.3
|
21
|
+
gemfile: gemfiles/activerecord_master.gemfile
|
22
|
+
- rvm: 2.1.10
|
23
|
+
gemfile: gemfiles/activerecord_master.gemfile
|
24
|
+
- rvm: 1.9.3
|
25
|
+
gemfile: gemfiles/activerecord_5.1.gemfile
|
26
|
+
- rvm: 2.1.10
|
27
|
+
gemfile: gemfiles/activerecord_5.1.gemfile
|
20
28
|
- rvm: 1.9.3
|
21
29
|
gemfile: gemfiles/activerecord_5.0.gemfile
|
22
30
|
- rvm: 2.1.10
|
@@ -37,3 +45,5 @@ gemfile:
|
|
37
45
|
- gemfiles/activerecord_4.1.gemfile
|
38
46
|
- gemfiles/activerecord_4.2.gemfile
|
39
47
|
- gemfiles/activerecord_5.0.gemfile
|
48
|
+
- gemfiles/activerecord_5.1.gemfile
|
49
|
+
- gemfiles/activerecord_master.gemfile
|
data/Appraisals
CHANGED
data/CHANGES.md
CHANGED
@@ -0,0 +1,16 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "https://rubygems.org"
|
4
|
+
|
5
|
+
gem "activerecord", "~> 5.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
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "https://rubygems.org"
|
4
|
+
|
5
|
+
git 'https://github.com/rails/rails.git' do
|
6
|
+
gem 'activerecord'
|
7
|
+
end
|
8
|
+
|
9
|
+
group :development, :test do
|
10
|
+
gem "spec"
|
11
|
+
gem "rspec", ">= 1.2.9"
|
12
|
+
gem "rake"
|
13
|
+
end
|
14
|
+
|
15
|
+
group :development do
|
16
|
+
gem "appraisal"
|
17
|
+
gem "simplecov", :require => false
|
18
|
+
end
|
@@ -279,21 +279,37 @@ class ActiveRecord::ConnectionAdapters::NullDBAdapter < ActiveRecord::Connection
|
|
279
279
|
|
280
280
|
def args_with_optional_cast_type(col_def)
|
281
281
|
default_column_arguments(col_def).tap do |args|
|
282
|
-
if
|
283
|
-
|
282
|
+
if defined?(ActiveRecord::ConnectionAdapters::SqlTypeMetadata)
|
283
|
+
meta = ActiveRecord::ConnectionAdapters::SqlTypeMetadata.new(sql_type: col_def.type)
|
284
|
+
args.insert(2, meta_with_limit!(meta, col_def))
|
284
285
|
elsif initialize_column_with_cast_type?
|
285
|
-
args.insert(2, lookup_cast_type(col_def.type))
|
286
|
+
args.insert(2, meta_with_limit!(lookup_cast_type(col_def.type), col_def))
|
287
|
+
else
|
288
|
+
args[2] = args[2].to_s + "(#{col_def.limit})" if col_def.limit
|
286
289
|
end
|
287
290
|
end
|
288
291
|
end
|
289
292
|
|
293
|
+
def meta_with_limit!(meta, col_def)
|
294
|
+
meta.instance_variable_set('@limit', col_def.limit)
|
295
|
+
meta
|
296
|
+
end
|
297
|
+
|
290
298
|
def default_column_arguments(col_def)
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
299
|
+
if ActiveRecord::VERSION::MAJOR == 5
|
300
|
+
[
|
301
|
+
col_def.name.to_s,
|
302
|
+
col_def.default,
|
303
|
+
col_def.null.nil? || col_def.null # cast [false, nil, true] => [false, true, true], other adapters default to null=true
|
304
|
+
]
|
305
|
+
else
|
306
|
+
[
|
307
|
+
col_def.name.to_s,
|
308
|
+
col_def.default,
|
309
|
+
col_def.type,
|
310
|
+
col_def.null.nil? || col_def.null # cast [false, nil, true] => [false, true, true], other adapters default to null=true
|
311
|
+
]
|
312
|
+
end
|
297
313
|
end
|
298
314
|
|
299
315
|
def initialize_column_with_cast_type?
|
data/lib/nulldb/extensions.rb
CHANGED
@@ -33,7 +33,7 @@ end
|
|
33
33
|
|
34
34
|
module ActiveRecord
|
35
35
|
# Just make sure you have the latest version of your schema
|
36
|
-
superclass = ActiveRecord::VERSION::MAJOR == 5 ? Migration[
|
36
|
+
superclass = ActiveRecord::VERSION::MAJOR == 5 ? Migration.public_send(:[], "#{ActiveRecord::VERSION::MAJOR}.#{ActiveRecord::VERSION::MINOR}".to_f) : Migration
|
37
37
|
class Schema < superclass
|
38
38
|
def self.define(info={}, &block)
|
39
39
|
instance_eval(&block)
|
data/spec/nulldb_spec.rb
CHANGED
@@ -71,7 +71,7 @@ describe "NullDB" do
|
|
71
71
|
ActiveRecord::Migration.verbose = false
|
72
72
|
ActiveRecord::Schema.define do
|
73
73
|
create_table(:employees) do |t|
|
74
|
-
t.string :name
|
74
|
+
t.string :name, null: false, limit: 50
|
75
75
|
t.date :hire_date
|
76
76
|
t.integer :employee_number
|
77
77
|
t.decimal :salary
|
@@ -113,6 +113,18 @@ describe "NullDB" do
|
|
113
113
|
should_have_column(Employee, :salary, :decimal)
|
114
114
|
end
|
115
115
|
|
116
|
+
it 'should have limit on name' do
|
117
|
+
expect(Employee.columns_hash['name'].limit).to eq 50
|
118
|
+
end
|
119
|
+
|
120
|
+
it "should return true on nullable field" do
|
121
|
+
expect(Employee.columns_hash['salary'].null).to be true
|
122
|
+
end
|
123
|
+
|
124
|
+
it "should return false on non-nullable field" do
|
125
|
+
expect(Employee.columns_hash['name'].null).to be false
|
126
|
+
end
|
127
|
+
|
116
128
|
it "should return the appropriate primary key" do
|
117
129
|
expect( ActiveRecord::Base.connection.primary_key('employees') ).to eq 'id'
|
118
130
|
end
|
@@ -249,7 +261,7 @@ describe "NullDB" do
|
|
249
261
|
|
250
262
|
def should_have_column(klass, col_name, col_type)
|
251
263
|
col = klass.columns_hash[col_name.to_s]
|
252
|
-
expect(col.sql_type.to_sym).to eq col_type
|
264
|
+
expect(col.sql_type.to_s.gsub(/\([0-9]+\)/, "").to_sym).to eq col_type
|
253
265
|
end
|
254
266
|
|
255
267
|
|
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.7
|
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:
|
12
|
+
date: 2017-06-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|
@@ -123,6 +123,8 @@ files:
|
|
123
123
|
- gemfiles/activerecord_4.1.gemfile
|
124
124
|
- gemfiles/activerecord_4.2.gemfile
|
125
125
|
- gemfiles/activerecord_5.0.gemfile
|
126
|
+
- gemfiles/activerecord_5.1.gemfile
|
127
|
+
- gemfiles/activerecord_master.gemfile
|
126
128
|
- lib/active_record/connection_adapters/nulldb_adapter.rb
|
127
129
|
- lib/active_record/connection_adapters/nulldb_adapter/checkpoint.rb
|
128
130
|
- lib/active_record/connection_adapters/nulldb_adapter/column.rb
|
@@ -163,7 +165,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
163
165
|
version: '0'
|
164
166
|
requirements: []
|
165
167
|
rubyforge_project:
|
166
|
-
rubygems_version: 2.
|
168
|
+
rubygems_version: 2.5.2
|
167
169
|
signing_key:
|
168
170
|
specification_version: 4
|
169
171
|
summary: The Null Object pattern as applied to ActiveRecord database adapters
|