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 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