activerecord-nulldb-adapter 0.3.6 → 0.3.7
Sign up to get free protection for your applications and to get access to all the features.
- 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
|