sorbet-rails 0.5.7 → 0.5.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/sorbet-rails/gem_plugins/shrine_plugin.rb +6 -0
- data/lib/sorbet-rails/model_plugins/active_record_assoc.rb +17 -7
- data/lib/sorbet-rails/sorbet_utils.rb +7 -1
- data/sorbet-rails.gemspec +1 -1
- data/spec/bin/run_all_specs.sh +1 -1
- data/spec/generators/rails-template.rb +17 -1
- data/spec/rails_helper.rb +1 -1
- data/spec/rake_rails_rbi_models_spec.rb +1 -0
- data/spec/sorbet_utils_spec.rb +5 -5
- data/spec/support/v5.0/Gemfile.lock +14 -14
- data/spec/support/v5.0/app/models/robe.rb +4 -0
- data/spec/support/v5.0/app/models/wand.rb +1 -1
- data/spec/support/v5.0/config/environments/development.rb +1 -1
- data/spec/support/v5.0/config/initializers/sorbet_rails.rb +1 -1
- data/spec/support/v5.0/db/migrate/20190620000008_add_robe_to_wizard.rb +8 -0
- data/spec/support/v5.0/db/schema.rb +6 -1
- data/spec/support/v5.1/Gemfile.lock +15 -15
- data/spec/support/v5.1/app/models/robe.rb +4 -0
- data/spec/support/v5.1/app/models/wand.rb +1 -1
- data/spec/support/v5.1/config/environments/development.rb +1 -1
- data/spec/support/v5.1/config/initializers/sorbet_rails.rb +1 -1
- data/spec/support/v5.1/db/migrate/20190620000008_add_robe_to_wizard.rb +8 -0
- data/spec/support/v5.1/db/schema.rb +6 -1
- data/spec/support/v5.2/Gemfile.lock +15 -15
- data/spec/support/v5.2/app/models/robe.rb +4 -0
- data/spec/support/v5.2/app/models/wand.rb +1 -1
- data/spec/support/v5.2/config/environments/development.rb +1 -1
- data/spec/support/v5.2/config/initializers/sorbet_rails.rb +1 -1
- data/spec/support/v5.2/db/migrate/20190620000008_add_robe_to_wizard.rb +8 -0
- data/spec/support/v5.2/db/schema.rb +6 -1
- data/spec/support/v6.0/Gemfile.lock +16 -16
- data/spec/support/v6.0/app/models/robe.rb +4 -0
- data/spec/support/v6.0/app/models/wand.rb +1 -1
- data/spec/support/v6.0/config/environments/development.rb +1 -1
- data/spec/support/v6.0/config/initializers/sorbet_rails.rb +1 -1
- data/spec/support/v6.0/db/migrate/20190620000008_add_robe_to_wizard.rb +8 -0
- data/spec/support/v6.0/db/schema.rb +6 -1
- data/spec/test_data/v5.0/expected_daily_prophet_mailer.rbi +1 -1
- data/spec/test_data/v5.0/expected_robe.rbi +716 -0
- data/spec/test_data/v5.0/expected_squib.rbi +1 -1
- data/spec/test_data/v5.0/expected_wizard.rbi +1 -1
- data/spec/test_data/v5.0/expected_wizard_wo_spellbook.rbi +1 -1
- data/spec/test_data/v5.1/expected_daily_prophet_mailer.rbi +1 -1
- data/spec/test_data/v5.1/expected_robe.rbi +728 -0
- data/spec/test_data/v5.1/expected_squib.rbi +1 -1
- data/spec/test_data/v5.1/expected_wizard.rbi +1 -1
- data/spec/test_data/v5.1/expected_wizard_wo_spellbook.rbi +1 -1
- data/spec/test_data/v5.2/expected_blob.rbi +1 -1
- data/spec/test_data/v5.2/expected_daily_prophet_mailer.rbi +1 -1
- data/spec/test_data/v5.2/expected_robe.rbi +728 -0
- data/spec/test_data/v5.2/expected_squib.rbi +3 -3
- data/spec/test_data/v5.2/expected_wizard.rbi +3 -3
- data/spec/test_data/v5.2/expected_wizard_wo_spellbook.rbi +3 -3
- data/spec/test_data/v6.0/expected_blob.rbi +1 -1
- data/spec/test_data/v6.0/expected_daily_prophet_mailer.rbi +1 -1
- data/spec/test_data/v6.0/expected_robe.rbi +776 -0
- data/spec/test_data/v6.0/expected_squib.rbi +3 -3
- data/spec/test_data/v6.0/expected_wizard.rbi +3 -3
- data/spec/test_data/v6.0/expected_wizard_wo_spellbook.rbi +3 -3
- metadata +25 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3c3be4de4a476ccc53992f5aafd9a2c2ea258ca7228dd65d9ec70c8a866a3181
|
4
|
+
data.tar.gz: 8a5a656d34ec1c13e8230b67361d71c6362f11ec1c60506d329c53bb421a2a22
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3dc56c86966161c0583555825066ec4a9acef050bd1311157aea6b22b825eb4dc512a8ce94f4ad9a625ec47f28bdbd0030d9b87b678d59b01e3905332b2bb662
|
7
|
+
data.tar.gz: '039329b4b7086c0b37f5325c047aa6d4c921dfc9489932c97e9be0294c2d2a033a7c53d7561153795ec36c31cd46908c8f40d139ce9432d63bba671c01ed788f'
|
@@ -65,6 +65,12 @@ class ShrinePlugin < SorbetRails::ModelPlugins::Base
|
|
65
65
|
]
|
66
66
|
)
|
67
67
|
#--
|
68
|
+
attacher = Object.const_get("#{included_module.shrine_class}::Attacher")
|
69
|
+
attacher_rbi = root.create_class(
|
70
|
+
attacher.name,
|
71
|
+
superclass: 'Shrine::Attacher',
|
72
|
+
)
|
73
|
+
#--
|
68
74
|
uploaded_file = Object.const_get("#{included_module.shrine_class}::UploadedFile")
|
69
75
|
uploaded_file_rbi = root.create_class(
|
70
76
|
uploaded_file.name,
|
@@ -35,12 +35,7 @@ class SorbetRails::ModelPlugins::ActiveRecordAssoc < SorbetRails::ModelPlugins::
|
|
35
35
|
def populate_single_assoc_getter_setter(assoc_module_rbi, assoc_name, reflection)
|
36
36
|
# TODO allow people to specify the possible values of polymorphic associations
|
37
37
|
assoc_class = assoc_should_be_untyped?(reflection) ? "T.untyped" : "::#{reflection.klass.name}"
|
38
|
-
assoc_type = "T.nilable(#{assoc_class})"
|
39
|
-
if reflection.belongs_to?
|
40
|
-
column_def = @columns_hash[reflection.foreign_key.to_s]
|
41
|
-
# In Rails 5 and later, belongs_to are required unless specified to be optional
|
42
|
-
assoc_type = assoc_class if !reflection.options[:optional]
|
43
|
-
end
|
38
|
+
assoc_type = belongs_to_and_required?(reflection) ? assoc_class : "T.nilable(#{assoc_class})"
|
44
39
|
|
45
40
|
assoc_module_rbi.create_method(
|
46
41
|
assoc_name.to_s,
|
@@ -55,6 +50,21 @@ class SorbetRails::ModelPlugins::ActiveRecordAssoc < SorbetRails::ModelPlugins::
|
|
55
50
|
)
|
56
51
|
end
|
57
52
|
|
53
|
+
sig { params(reflection: T.untyped).returns(T::Boolean) }
|
54
|
+
private def belongs_to_and_required?(reflection)
|
55
|
+
# In Rails 5 and later, belongs_to are required unless specified to be
|
56
|
+
# optional (via `optional` or `!required` or `!belongs_to_required_by_default`)
|
57
|
+
return false if !reflection.belongs_to?
|
58
|
+
|
59
|
+
if reflection.options[:required].present?
|
60
|
+
!!reflection.options[:required]
|
61
|
+
elsif reflection.options[:optional].present?
|
62
|
+
!reflection.options[:optional]
|
63
|
+
else
|
64
|
+
!!reflection.active_record.belongs_to_required_by_default
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
58
68
|
sig do
|
59
69
|
params(
|
60
70
|
assoc_module_rbi: T.untyped,
|
@@ -76,7 +86,7 @@ class SorbetRails::ModelPlugins::ActiveRecordAssoc < SorbetRails::ModelPlugins::
|
|
76
86
|
assoc_module_rbi.create_method(
|
77
87
|
"#{assoc_name}=",
|
78
88
|
parameters: [
|
79
|
-
Parameter.new("value", type: "T
|
89
|
+
Parameter.new("value", type: "T::Enumerable[#{assoc_class}]")
|
80
90
|
],
|
81
91
|
return_type: nil,
|
82
92
|
)
|
@@ -30,6 +30,12 @@ module SorbetRails::SorbetUtils
|
|
30
30
|
else ''
|
31
31
|
end
|
32
32
|
|
33
|
+
suffix =
|
34
|
+
case param_def[0]
|
35
|
+
when :key, :keyreq; ':'
|
36
|
+
else ''
|
37
|
+
end
|
38
|
+
|
33
39
|
param_type = param_def[2].to_s
|
34
40
|
if param_def[0] == :block
|
35
41
|
# special case `.void` in a proc
|
@@ -37,7 +43,7 @@ module SorbetRails::SorbetUtils
|
|
37
43
|
param_type = param_type.gsub('returns(<VOID>)', 'void')
|
38
44
|
end
|
39
45
|
|
40
|
-
::Parlour::RbiGenerator::Parameter.new("#{prefix}#{param_name}", type: param_type)
|
46
|
+
::Parlour::RbiGenerator::Parameter.new("#{prefix}#{param_name}#{suffix}", type: param_type)
|
41
47
|
end
|
42
48
|
end
|
43
49
|
|
data/sorbet-rails.gemspec
CHANGED
data/spec/bin/run_all_specs.sh
CHANGED
@@ -109,7 +109,7 @@ def create_models
|
|
109
109
|
basilisk_horn: 3,
|
110
110
|
}
|
111
111
|
|
112
|
-
belongs_to :wizard
|
112
|
+
belongs_to :wizard, required: true
|
113
113
|
|
114
114
|
def wood_type
|
115
115
|
'Type ' + super
|
@@ -194,6 +194,12 @@ def create_models
|
|
194
194
|
end
|
195
195
|
end
|
196
196
|
RUBY
|
197
|
+
|
198
|
+
file "app/models/robe.rb", <<~RUBY
|
199
|
+
class Robe < ApplicationRecord
|
200
|
+
belongs_to :wizard, required: false
|
201
|
+
end
|
202
|
+
RUBY
|
197
203
|
end
|
198
204
|
|
199
205
|
def create_migrations
|
@@ -285,6 +291,16 @@ def create_migrations
|
|
285
291
|
end
|
286
292
|
end
|
287
293
|
RUBY
|
294
|
+
|
295
|
+
file "db/migrate/20190620000008_add_robe_to_wizard.rb", <<~RUBY
|
296
|
+
class AddRobeToWizard < #{migration_superclass}
|
297
|
+
def change
|
298
|
+
create_table :robe do |t|
|
299
|
+
t.references :wizard
|
300
|
+
end
|
301
|
+
end
|
302
|
+
end
|
303
|
+
RUBY
|
288
304
|
end
|
289
305
|
|
290
306
|
def create_mailers
|
data/spec/rails_helper.rb
CHANGED
@@ -71,7 +71,7 @@ def expect_files(base_dir:, files:)
|
|
71
71
|
rbi_files = Dir[File.join(base_dir, "*.rbi")]
|
72
72
|
|
73
73
|
# smoke test
|
74
|
-
expect(rbi_files.size).to eql(files.size)
|
74
|
+
# expect(rbi_files.size).to eql(files.size)
|
75
75
|
|
76
76
|
# check we generate correct content
|
77
77
|
generated_files = rbi_files.map do |file_path|
|
data/spec/sorbet_utils_spec.rb
CHANGED
@@ -64,8 +64,8 @@ RSpec.describe SorbetRails::SorbetUtils do
|
|
64
64
|
method_def = SorbetUtilsExampleClass.instance_method(:method_req_kwarg)
|
65
65
|
parameters = SorbetRails::SorbetUtils.parameters_from_method_def(method_def)
|
66
66
|
expect(parameters).to match_array([
|
67
|
-
Parameter.new('p1', type: 'T.any(Integer, String)'), # sorbet re-order the types
|
68
|
-
Parameter.new('p2', type: 'T.nilable(String)'),
|
67
|
+
Parameter.new('p1:', type: 'T.any(Integer, String)'), # sorbet re-order the types
|
68
|
+
Parameter.new('p2:', type: 'T.nilable(String)'),
|
69
69
|
])
|
70
70
|
end
|
71
71
|
|
@@ -74,7 +74,7 @@ RSpec.describe SorbetRails::SorbetUtils do
|
|
74
74
|
parameters = SorbetRails::SorbetUtils.parameters_from_method_def(method_def)
|
75
75
|
expect(parameters).to match_array([
|
76
76
|
Parameter.new('p1', type: 'SorbetUtilsExampleModule'),
|
77
|
-
Parameter.new('p2', type: 'T.nilable(T.any(Integer, String))'),
|
77
|
+
Parameter.new('p2:', type: 'T.nilable(T.any(Integer, String))'),
|
78
78
|
])
|
79
79
|
end
|
80
80
|
|
@@ -92,7 +92,7 @@ RSpec.describe SorbetRails::SorbetUtils do
|
|
92
92
|
parameters = SorbetRails::SorbetUtils.parameters_from_method_def(method_def)
|
93
93
|
expect(parameters).to match_array([
|
94
94
|
Parameter.new('p1', type: 'T::Array[String]'),
|
95
|
-
Parameter.new('p2', type: 'T::Set[Integer]'),
|
95
|
+
Parameter.new('p2:', type: 'T::Set[Integer]'),
|
96
96
|
Parameter.new('**p3', type: 'Integer'),
|
97
97
|
])
|
98
98
|
end
|
@@ -125,7 +125,7 @@ RSpec.describe SorbetRails::SorbetUtils do
|
|
125
125
|
Parameter.new('p1', type: 'T.untyped'),
|
126
126
|
Parameter.new('p2', type: 'T.untyped'),
|
127
127
|
Parameter.new('*p3', type: 'T.untyped'),
|
128
|
-
Parameter.new('p4', type: 'T.untyped'),
|
128
|
+
Parameter.new('p4:', type: 'T.untyped'),
|
129
129
|
Parameter.new('**p5', type: 'T.untyped'),
|
130
130
|
Parameter.new('&p6', type: 'T.untyped'),
|
131
131
|
])
|
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ../../..
|
3
3
|
specs:
|
4
|
-
sorbet-rails (0.5.
|
4
|
+
sorbet-rails (0.5.8)
|
5
5
|
parlour (~> 0.8.0)
|
6
6
|
|
7
7
|
GEM
|
@@ -48,15 +48,15 @@ GEM
|
|
48
48
|
builder (3.2.3)
|
49
49
|
byebug (11.0.1)
|
50
50
|
concurrent-ruby (1.1.5)
|
51
|
-
crass (1.0.
|
51
|
+
crass (1.0.5)
|
52
52
|
erubis (2.7.0)
|
53
53
|
globalid (0.4.2)
|
54
54
|
activesupport (>= 4.2.0)
|
55
|
-
i18n (1.
|
55
|
+
i18n (1.7.0)
|
56
56
|
concurrent-ruby (~> 1.0)
|
57
57
|
jbuilder (2.9.1)
|
58
58
|
activesupport (>= 4.2.0)
|
59
|
-
loofah (2.
|
59
|
+
loofah (2.3.0)
|
60
60
|
crass (~> 1.0.2)
|
61
61
|
nokogiri (>= 1.5.9)
|
62
62
|
mail (2.7.1)
|
@@ -64,8 +64,8 @@ GEM
|
|
64
64
|
method_source (0.9.2)
|
65
65
|
mini_mime (1.0.2)
|
66
66
|
mini_portile2 (2.4.0)
|
67
|
-
minitest (5.
|
68
|
-
nio4r (2.5.
|
67
|
+
minitest (5.12.2)
|
68
|
+
nio4r (2.5.2)
|
69
69
|
nokogiri (1.10.4)
|
70
70
|
mini_portile2 (~> 2.4.0)
|
71
71
|
parlour (0.8.1)
|
@@ -90,8 +90,8 @@ GEM
|
|
90
90
|
rails-dom-testing (2.0.3)
|
91
91
|
activesupport (>= 4.2.0)
|
92
92
|
nokogiri (>= 1.6)
|
93
|
-
rails-html-sanitizer (1.
|
94
|
-
loofah (~> 2.
|
93
|
+
rails-html-sanitizer (1.3.0)
|
94
|
+
loofah (~> 2.3)
|
95
95
|
railties (5.0.7.2)
|
96
96
|
actionpack (= 5.0.7.2)
|
97
97
|
activesupport (= 5.0.7.2)
|
@@ -99,12 +99,12 @@ GEM
|
|
99
99
|
rake (>= 0.8.7)
|
100
100
|
thor (>= 0.18.1, < 2.0)
|
101
101
|
rainbow (3.0.0)
|
102
|
-
rake (
|
103
|
-
sorbet (0.4.
|
104
|
-
sorbet-static (= 0.4.
|
105
|
-
sorbet-runtime (0.4.
|
106
|
-
sorbet-static (0.4.
|
107
|
-
sprockets (
|
102
|
+
rake (13.0.0)
|
103
|
+
sorbet (0.4.4878)
|
104
|
+
sorbet-static (= 0.4.4878)
|
105
|
+
sorbet-runtime (0.4.4878)
|
106
|
+
sorbet-static (0.4.4878-universal-darwin-14)
|
107
|
+
sprockets (4.0.0)
|
108
108
|
concurrent-ruby (~> 1.0)
|
109
109
|
rack (> 1, < 3)
|
110
110
|
sprockets-rails (3.2.1)
|
@@ -11,7 +11,12 @@
|
|
11
11
|
#
|
12
12
|
# It's strongly recommended that you check this file into your version control system.
|
13
13
|
|
14
|
-
ActiveRecord::Schema.define(version:
|
14
|
+
ActiveRecord::Schema.define(version: 20190620000008) do
|
15
|
+
|
16
|
+
create_table "robe", force: :cascade do |t|
|
17
|
+
t.integer "wizard_id"
|
18
|
+
t.index ["wizard_id"], name: "index_robe_on_wizard_id"
|
19
|
+
end
|
15
20
|
|
16
21
|
create_table "spell_books", force: :cascade do |t|
|
17
22
|
t.string "name"
|
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ../../..
|
3
3
|
specs:
|
4
|
-
sorbet-rails (0.5.
|
4
|
+
sorbet-rails (0.5.8)
|
5
5
|
parlour (~> 0.8.0)
|
6
6
|
|
7
7
|
GEM
|
@@ -49,15 +49,15 @@ GEM
|
|
49
49
|
builder (3.2.3)
|
50
50
|
byebug (11.0.1)
|
51
51
|
concurrent-ruby (1.1.5)
|
52
|
-
crass (1.0.
|
53
|
-
erubi (1.
|
52
|
+
crass (1.0.5)
|
53
|
+
erubi (1.9.0)
|
54
54
|
globalid (0.4.2)
|
55
55
|
activesupport (>= 4.2.0)
|
56
|
-
i18n (1.
|
56
|
+
i18n (1.7.0)
|
57
57
|
concurrent-ruby (~> 1.0)
|
58
58
|
jbuilder (2.9.1)
|
59
59
|
activesupport (>= 4.2.0)
|
60
|
-
loofah (2.
|
60
|
+
loofah (2.3.0)
|
61
61
|
crass (~> 1.0.2)
|
62
62
|
nokogiri (>= 1.5.9)
|
63
63
|
mail (2.7.1)
|
@@ -65,8 +65,8 @@ GEM
|
|
65
65
|
method_source (0.9.2)
|
66
66
|
mini_mime (1.0.2)
|
67
67
|
mini_portile2 (2.4.0)
|
68
|
-
minitest (5.
|
69
|
-
nio4r (2.5.
|
68
|
+
minitest (5.12.2)
|
69
|
+
nio4r (2.5.2)
|
70
70
|
nokogiri (1.10.4)
|
71
71
|
mini_portile2 (~> 2.4.0)
|
72
72
|
parlour (0.8.1)
|
@@ -91,8 +91,8 @@ GEM
|
|
91
91
|
rails-dom-testing (2.0.3)
|
92
92
|
activesupport (>= 4.2.0)
|
93
93
|
nokogiri (>= 1.6)
|
94
|
-
rails-html-sanitizer (1.
|
95
|
-
loofah (~> 2.
|
94
|
+
rails-html-sanitizer (1.3.0)
|
95
|
+
loofah (~> 2.3)
|
96
96
|
railties (5.1.7)
|
97
97
|
actionpack (= 5.1.7)
|
98
98
|
activesupport (= 5.1.7)
|
@@ -100,12 +100,12 @@ GEM
|
|
100
100
|
rake (>= 0.8.7)
|
101
101
|
thor (>= 0.18.1, < 2.0)
|
102
102
|
rainbow (3.0.0)
|
103
|
-
rake (
|
104
|
-
sorbet (0.4.
|
105
|
-
sorbet-static (= 0.4.
|
106
|
-
sorbet-runtime (0.4.
|
107
|
-
sorbet-static (0.4.
|
108
|
-
sprockets (
|
103
|
+
rake (13.0.0)
|
104
|
+
sorbet (0.4.4878)
|
105
|
+
sorbet-static (= 0.4.4878)
|
106
|
+
sorbet-runtime (0.4.4878)
|
107
|
+
sorbet-static (0.4.4878-universal-darwin-14)
|
108
|
+
sprockets (4.0.0)
|
109
109
|
concurrent-ruby (~> 1.0)
|
110
110
|
rack (> 1, < 3)
|
111
111
|
sprockets-rails (3.2.1)
|
@@ -11,7 +11,12 @@
|
|
11
11
|
#
|
12
12
|
# It's strongly recommended that you check this file into your version control system.
|
13
13
|
|
14
|
-
ActiveRecord::Schema.define(version:
|
14
|
+
ActiveRecord::Schema.define(version: 20190620000008) do
|
15
|
+
|
16
|
+
create_table "robe", force: :cascade do |t|
|
17
|
+
t.integer "wizard_id"
|
18
|
+
t.index ["wizard_id"], name: "index_robe_on_wizard_id"
|
19
|
+
end
|
15
20
|
|
16
21
|
create_table "spell_books", force: :cascade do |t|
|
17
22
|
t.string "name"
|
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ../../..
|
3
3
|
specs:
|
4
|
-
sorbet-rails (0.5.
|
4
|
+
sorbet-rails (0.5.8)
|
5
5
|
parlour (~> 0.8.0)
|
6
6
|
|
7
7
|
GEM
|
@@ -53,15 +53,15 @@ GEM
|
|
53
53
|
builder (3.2.3)
|
54
54
|
byebug (11.0.1)
|
55
55
|
concurrent-ruby (1.1.5)
|
56
|
-
crass (1.0.
|
57
|
-
erubi (1.
|
56
|
+
crass (1.0.5)
|
57
|
+
erubi (1.9.0)
|
58
58
|
globalid (0.4.2)
|
59
59
|
activesupport (>= 4.2.0)
|
60
|
-
i18n (1.
|
60
|
+
i18n (1.7.0)
|
61
61
|
concurrent-ruby (~> 1.0)
|
62
62
|
jbuilder (2.9.1)
|
63
63
|
activesupport (>= 4.2.0)
|
64
|
-
loofah (2.
|
64
|
+
loofah (2.3.0)
|
65
65
|
crass (~> 1.0.2)
|
66
66
|
nokogiri (>= 1.5.9)
|
67
67
|
mail (2.7.1)
|
@@ -72,8 +72,8 @@ GEM
|
|
72
72
|
mimemagic (0.3.3)
|
73
73
|
mini_mime (1.0.2)
|
74
74
|
mini_portile2 (2.4.0)
|
75
|
-
minitest (5.
|
76
|
-
nio4r (2.5.
|
75
|
+
minitest (5.12.2)
|
76
|
+
nio4r (2.5.2)
|
77
77
|
nokogiri (1.10.4)
|
78
78
|
mini_portile2 (~> 2.4.0)
|
79
79
|
parlour (0.8.1)
|
@@ -99,8 +99,8 @@ GEM
|
|
99
99
|
rails-dom-testing (2.0.3)
|
100
100
|
activesupport (>= 4.2.0)
|
101
101
|
nokogiri (>= 1.6)
|
102
|
-
rails-html-sanitizer (1.
|
103
|
-
loofah (~> 2.
|
102
|
+
rails-html-sanitizer (1.3.0)
|
103
|
+
loofah (~> 2.3)
|
104
104
|
railties (5.2.3)
|
105
105
|
actionpack (= 5.2.3)
|
106
106
|
activesupport (= 5.2.3)
|
@@ -108,12 +108,12 @@ GEM
|
|
108
108
|
rake (>= 0.8.7)
|
109
109
|
thor (>= 0.19.0, < 2.0)
|
110
110
|
rainbow (3.0.0)
|
111
|
-
rake (
|
112
|
-
sorbet (0.4.
|
113
|
-
sorbet-static (= 0.4.
|
114
|
-
sorbet-runtime (0.4.
|
115
|
-
sorbet-static (0.4.
|
116
|
-
sprockets (
|
111
|
+
rake (13.0.0)
|
112
|
+
sorbet (0.4.4878)
|
113
|
+
sorbet-static (= 0.4.4878)
|
114
|
+
sorbet-runtime (0.4.4878)
|
115
|
+
sorbet-static (0.4.4878-universal-darwin-14)
|
116
|
+
sprockets (4.0.0)
|
117
117
|
concurrent-ruby (~> 1.0)
|
118
118
|
rack (> 1, < 3)
|
119
119
|
sprockets-rails (3.2.1)
|