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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e7a2b38931986ca22035d58a578fa13a21f74360
4
- data.tar.gz: 5700dffe9b6c19f8ff9c9e0b8cb3c81887c9dde1
3
+ metadata.gz: 81d75c5def8b53125f8505b1cde22775cb4cbcbd
4
+ data.tar.gz: fa4c888a50ce9aacdaa58c628890319b35ea01bc
5
5
  SHA512:
6
- metadata.gz: ace3f7f82325a86cb9744fa365f740ab9317961f724412d07dfc0b8f6e83948a8b98375a228ab9721a230466908f1ed4440c268edfc555be3fd7081c0c119890
7
- data.tar.gz: 745b6c3543a7e59563cfbf78edf65345e248641d5b7e9fb90389686ee0375718ca523dc52e4db39a2a12a420a9d1e2829ed2a32242fea5e7f3038cec91f09d84
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
@@ -30,3 +30,7 @@ end
30
30
  appraise "activerecord-5.0" do
31
31
  gem "activerecord", "~> 5.0.0"
32
32
  end
33
+
34
+ appraise "activerecord-5.1" do
35
+ gem "activerecord", "~> 5.1.0"
36
+ end
data/CHANGES.md CHANGED
@@ -1,3 +1,9 @@
1
+ 0.3.7 (2017-06-04)
2
+ -----------
3
+ - Adds support for ActiveRecord 5.1/5.2.
4
+ - Support limit and null
5
+
6
+
1
7
  0.3.6 (2016-11-23)
2
8
  -----------
3
9
  - Adds support for ActiveRecord 5.0.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "activerecord-nulldb-adapter"
5
- s.version = "0.3.6"
5
+ s.version = "0.3.7"
6
6
 
7
7
  s.require_paths = ["lib"]
8
8
  s.authors = ["Avdi Grimm", "Myron Marston"]
@@ -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 respond_to? :fetch_type_metadata
283
- args.insert(2, fetch_type_metadata(col_def.type))
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
- col_def.name.to_s,
293
- col_def.default,
294
- col_def.type,
295
- col_def.null
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?
@@ -17,6 +17,10 @@ class ActiveRecord::ConnectionAdapters::NullDBAdapter
17
17
  def cast_values(type_overrides = nil)
18
18
  rows
19
19
  end
20
+
21
+ def >(num)
22
+ rows.size > num
23
+ end
20
24
  end
21
25
 
22
26
  end
@@ -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[5.0] : 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.6
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: 2016-11-30 00:00:00.000000000 Z
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.4.8
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