with_model 2.1.2 → 2.1.3
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/.rubocop.yml +3 -0
- data/.travis.yml +11 -15
- data/CHANGELOG.md +5 -1
- data/Gemfile +18 -1
- data/LICENSE +1 -1
- data/README.md +1 -1
- data/lib/with_model.rb +2 -2
- data/lib/with_model/model.rb +9 -6
- data/lib/with_model/table.rb +1 -1
- data/lib/with_model/version.rb +1 -1
- data/spec/with_model_spec.rb +14 -8
- data/with_model.gemspec +3 -2
- metadata +21 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cb3f231c15ce48cb075bcb5fe28ffde183e3432328d7a3797744cef9a9eb27ab
|
4
|
+
data.tar.gz: 1a4ef223a3c590833eaa4886bf471dd0b1e5fe5f79b84b2ed011537812e681d6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 21640ee3c2312f019aa6c83268c6606c96f3fe03b7c1af2be15e2fd2ea9a48e3ed31f48d0581733a65577843cdf7069523b674137650d50187d933f8cb53ef90
|
7
|
+
data.tar.gz: 39aa2e361858be2e75375c02ba272bd39ff2528650b17e6ce197ac92683b3dbf83f0cb968573af37cf60945b847992091e2510f3bde196ba3e7543928f081dc2
|
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
@@ -1,37 +1,33 @@
|
|
1
1
|
language: ruby
|
2
|
-
sudo: false
|
3
2
|
|
4
3
|
rvm:
|
5
|
-
-
|
6
|
-
-
|
7
|
-
-
|
8
|
-
- jruby-9.2.
|
4
|
+
- 2.6.5
|
5
|
+
- 2.5.7
|
6
|
+
- 2.4.9
|
7
|
+
- jruby-9.2.8.0
|
9
8
|
|
10
9
|
install:
|
10
|
+
- gem install bundler
|
11
11
|
- bundle install --retry=3
|
12
12
|
|
13
13
|
env:
|
14
14
|
- ACTIVE_RECORD_BRANCH="master"
|
15
|
-
-
|
15
|
+
- ACTIVE_RECORD_VERSION="~> 6.0.0"
|
16
16
|
- ACTIVE_RECORD_VERSION="~> 5.2.0"
|
17
17
|
- ACTIVE_RECORD_VERSION="~> 5.1.0"
|
18
18
|
- ACTIVE_RECORD_VERSION="~> 5.0.0"
|
19
19
|
- ACTIVE_RECORD_VERSION="~> 4.2.0"
|
20
20
|
|
21
21
|
matrix:
|
22
|
+
fast_finish: true
|
22
23
|
allow_failures:
|
23
24
|
- env: ACTIVE_RECORD_BRANCH="master"
|
24
|
-
- env: ACTIVE_RECORD_BRANCH="5-2-stable"
|
25
25
|
exclude:
|
26
|
-
- rvm: 2.
|
26
|
+
- rvm: 2.4.9
|
27
27
|
env: ACTIVE_RECORD_BRANCH="master"
|
28
|
-
- rvm:
|
29
|
-
env:
|
30
|
-
- rvm: jruby-9.2.
|
31
|
-
env: ACTIVE_RECORD_BRANCH="5-2-stable"
|
32
|
-
- rvm: jruby-9.2.0.0
|
33
|
-
env: ACTIVE_RECORD_VERSION="~> 5.2.0"
|
34
|
-
- rvm: jruby-9.2.0.0
|
28
|
+
- rvm: 2.4.9
|
29
|
+
env: ACTIVE_RECORD_VERSION="~> 6.0.0"
|
30
|
+
- rvm: jruby-9.2.8.0
|
35
31
|
env: ACTIVE_RECORD_VERSION="~> 4.2.0"
|
36
32
|
|
37
33
|
addons:
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# rubocop:disable Bundler/DuplicatedGem, Bundler/OrderedGems
|
4
|
+
|
3
5
|
source 'https://rubygems.org'
|
4
6
|
|
5
7
|
gemspec
|
@@ -8,10 +10,25 @@ gem 'lint-config-ruby', git: 'https://github.com/Casecommons/lint-config-ruby.gi
|
|
8
10
|
|
9
11
|
ar_branch = ENV['ACTIVE_RECORD_BRANCH']
|
10
12
|
ar_version = ENV['ACTIVE_RECORD_VERSION']
|
13
|
+
is_jruby = RUBY_PLATFORM == 'java'
|
11
14
|
|
12
15
|
if ar_branch
|
13
16
|
gem 'activerecord', git: 'https://github.com/rails/rails.git', branch: ar_branch
|
14
|
-
|
17
|
+
if ar_branch == 'master'
|
18
|
+
gem 'arel', git: 'https://github.com/rails/arel.git'
|
19
|
+
gem 'activerecord-jdbcsqlite3-adapter', git: 'https://github.com/jruby/activerecord-jdbc-adapter.git' if is_jruby
|
20
|
+
end
|
15
21
|
elsif ar_version
|
16
22
|
gem 'activerecord', ar_version # rubocop:disable Bundler/DuplicatedGem
|
23
|
+
if is_jruby && Gem::Requirement.new(ar_version).satisfied_by?(Gem::Version.new('6.0.0'))
|
24
|
+
gem 'activerecord-jdbcsqlite3-adapter', git: 'https://github.com/jruby/activerecord-jdbc-adapter.git'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
unless is_jruby
|
29
|
+
if ar_branch == 'master' || Gem::Requirement.new(ar_version).satisfied_by?(Gem::Version.new('6.0.0'))
|
30
|
+
gem 'sqlite3', '~> 1.4.1'
|
31
|
+
else
|
32
|
+
gem 'sqlite3', '~> 1.3.11'
|
33
|
+
end
|
17
34
|
end
|
data/LICENSE
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Copyright (c) 2010-
|
1
|
+
Copyright (c) 2010-2019 Casebook, PBC <http://www.casebook.net>
|
2
2
|
|
3
3
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
4
|
of this software and associated documentation files (the "Software"), to deal
|
data/README.md
CHANGED
@@ -181,5 +181,5 @@ In general, `with_model` is not guaranteed to be thread-safe, but is, in certain
|
|
181
181
|
|
182
182
|
## License
|
183
183
|
|
184
|
-
Copyright © 2010–2018 [
|
184
|
+
Copyright © 2010–2018 [Casebook PBC](https://www.casebook.net).
|
185
185
|
Licensed under the MIT license, see [LICENSE](/LICENSE) file.
|
data/lib/with_model.rb
CHANGED
@@ -6,7 +6,7 @@ require 'with_model/table'
|
|
6
6
|
require 'with_model/version'
|
7
7
|
|
8
8
|
module WithModel
|
9
|
-
# @param name The constant name
|
9
|
+
# @param [Symbol] name The constant name to assign the model class to.
|
10
10
|
# @param scope Passed to `before`/`after` in the test context.
|
11
11
|
# @param options Passed to {WithModel::Model#initialize}.
|
12
12
|
# @param block Yielded an instance of {WithModel::Model::DSL}.
|
@@ -24,7 +24,7 @@ module WithModel
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
-
# @param name The table name
|
27
|
+
# @param [Symbol] name The table name to create.
|
28
28
|
# @param scope Passed to `before`/`after` in the test context.
|
29
29
|
# @param options Passed to {WithModel::Table#initialize}.
|
30
30
|
# @param block Passed to {WithModel::Table#initialize} (like {WithModel::Model::DSL#table}).
|
data/lib/with_model/model.rb
CHANGED
@@ -13,8 +13,8 @@ module WithModel
|
|
13
13
|
class Model
|
14
14
|
attr_writer :model_block, :table_block, :table_options
|
15
15
|
|
16
|
-
# @param name The constant name
|
17
|
-
# @param superclass The superclass for the created class. Should
|
16
|
+
# @param [Symbol] name The constant name to assign the model class to.
|
17
|
+
# @param [Class] superclass The superclass for the created class. Should
|
18
18
|
# have `ActiveRecord::Base` as an ancestor.
|
19
19
|
def initialize(name, superclass: ActiveRecord::Base)
|
20
20
|
@name = name.to_sym
|
@@ -35,7 +35,7 @@ module WithModel
|
|
35
35
|
|
36
36
|
def destroy
|
37
37
|
stubber.unstub_const
|
38
|
-
|
38
|
+
cleanup_descendants_tracking
|
39
39
|
reset_dependencies_cache
|
40
40
|
table.destroy
|
41
41
|
@model = nil
|
@@ -53,9 +53,12 @@ module WithModel
|
|
53
53
|
@model.reset_column_information
|
54
54
|
end
|
55
55
|
|
56
|
-
def
|
57
|
-
|
58
|
-
|
56
|
+
def cleanup_descendants_tracking
|
57
|
+
if defined?(ActiveSupport::DescendantsTracker)
|
58
|
+
ActiveSupport::DescendantsTracker.class_variable_get(:@@direct_descendants).delete(ActiveRecord::Base)
|
59
|
+
elsif @model.superclass.respond_to?(:direct_descendants)
|
60
|
+
@model.superclass.direct_descendants.delete(@model)
|
61
|
+
end
|
59
62
|
end
|
60
63
|
|
61
64
|
def reset_dependencies_cache
|
data/lib/with_model/table.rb
CHANGED
@@ -6,7 +6,7 @@ module WithModel
|
|
6
6
|
# In general, direct use of this class should be avoided. Instead use
|
7
7
|
# either the {WithModel high-level API} or {WithModel::Model::DSL low-level API}.
|
8
8
|
class Table
|
9
|
-
# @param name The name of the table to create.
|
9
|
+
# @param [Symbol] name The name of the table to create.
|
10
10
|
# @param options Passed to ActiveRecord `create_table`.
|
11
11
|
# @param block Passed to ActiveRecord `create_table`.
|
12
12
|
# @see https://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-create_table
|
data/lib/with_model/version.rb
CHANGED
data/spec/with_model_spec.rb
CHANGED
@@ -305,20 +305,26 @@ describe 'a temporary ActiveRecord model created with with_model' do
|
|
305
305
|
end
|
306
306
|
|
307
307
|
context 'with ActiveSupport::DescendantsTracker' do
|
308
|
-
with_model :BlogPost
|
308
|
+
with_model :BlogPost do
|
309
|
+
model do
|
310
|
+
def self.inspect
|
311
|
+
"BlogPost class #{object_id}"
|
312
|
+
end
|
313
|
+
end
|
314
|
+
end
|
309
315
|
|
310
|
-
|
311
|
-
|
316
|
+
def blog_post_classes
|
317
|
+
ActiveRecord::Base.descendants.select do |c|
|
312
318
|
c.table_name == BlogPost.table_name
|
313
319
|
end
|
314
|
-
|
320
|
+
end
|
321
|
+
|
322
|
+
it 'includes the correct model class in descendants on the first test run' do
|
323
|
+
expect(blog_post_classes).to eq [BlogPost]
|
315
324
|
end
|
316
325
|
|
317
326
|
it 'includes the correct model class in descendants on the second test run' do
|
318
|
-
|
319
|
-
c.table_name == BlogPost.table_name
|
320
|
-
end
|
321
|
-
expect(descendant).to eq BlogPost
|
327
|
+
expect(blog_post_classes).to eq [BlogPost]
|
322
328
|
end
|
323
329
|
end
|
324
330
|
|
data/with_model.gemspec
CHANGED
@@ -20,12 +20,13 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.required_ruby_version = '>= 2.3'
|
22
22
|
|
23
|
-
spec.add_dependency 'activerecord', '>= 4.2', '< 6.
|
23
|
+
spec.add_dependency 'activerecord', '>= 4.2', '< 6.1'
|
24
24
|
|
25
|
-
spec.add_development_dependency 'bundler', '~>
|
25
|
+
spec.add_development_dependency 'bundler', '~> 2.0'
|
26
26
|
spec.add_development_dependency 'minitest'
|
27
27
|
spec.add_development_dependency 'rake'
|
28
28
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
29
|
+
spec.add_development_dependency 'yard'
|
29
30
|
|
30
31
|
if RUBY_PLATFORM == 'java'
|
31
32
|
spec.add_development_dependency 'activerecord-jdbcsqlite3-adapter'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: with_model
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Case Commons, LLC
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2019-11-14 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activerecord
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: '4.2'
|
22
22
|
- - "<"
|
23
23
|
- !ruby/object:Gem::Version
|
24
|
-
version: '6.
|
24
|
+
version: '6.1'
|
25
25
|
type: :runtime
|
26
26
|
prerelease: false
|
27
27
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -31,21 +31,21 @@ dependencies:
|
|
31
31
|
version: '4.2'
|
32
32
|
- - "<"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '6.
|
34
|
+
version: '6.1'
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: bundler
|
37
37
|
requirement: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: '
|
41
|
+
version: '2.0'
|
42
42
|
type: :development
|
43
43
|
prerelease: false
|
44
44
|
version_requirements: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
46
|
- - "~>"
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: '
|
48
|
+
version: '2.0'
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
50
|
name: minitest
|
51
51
|
requirement: !ruby/object:Gem::Requirement
|
@@ -88,6 +88,20 @@ dependencies:
|
|
88
88
|
- - "~>"
|
89
89
|
- !ruby/object:Gem::Version
|
90
90
|
version: '3.0'
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: yard
|
93
|
+
requirement: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
98
|
+
type: :development
|
99
|
+
prerelease: false
|
100
|
+
version_requirements: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
91
105
|
- !ruby/object:Gem::Dependency
|
92
106
|
name: sqlite3
|
93
107
|
requirement: !ruby/object:Gem::Requirement
|
@@ -153,8 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
153
167
|
- !ruby/object:Gem::Version
|
154
168
|
version: '0'
|
155
169
|
requirements: []
|
156
|
-
|
157
|
-
rubygems_version: 2.7.6
|
170
|
+
rubygems_version: 3.0.6
|
158
171
|
signing_key:
|
159
172
|
specification_version: 4
|
160
173
|
summary: Dynamically build a model within an RSpec context
|