sorbet-rails 0.7.2 → 0.7.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/lib/sorbet-rails/config.rb +1 -0
- data/lib/sorbet-rails/dependent_gem_rbis/activerecord.rbi +3 -0
- data/lib/sorbet-rails/model_plugins/active_record_assoc.rb +17 -5
- data/lib/sorbet-rails/model_plugins/active_record_attribute.rb +2 -0
- data/lib/sorbet-rails/model_plugins/active_record_serialized_attribute.rb +68 -0
- data/lib/sorbet-rails/model_plugins/base.rb +8 -0
- data/lib/sorbet-rails/model_plugins/plugins.rb +3 -0
- data/lib/sorbet-rails/model_rbi_formatter.rb +3 -3
- data/lib/sorbet-rails/rails_mixins/pluck_to_tstruct.rb +39 -2
- data/lib/sorbet-rails/routes_rbi_formatter.rb +4 -0
- data/lib/sorbet-rails/tasks/rails_rbi.rake +4 -3
- data/sorbet-rails.gemspec +1 -1
- data/spec/bin/run_spec.sh +1 -1
- data/spec/generators/rails-template.rb +16 -0
- data/spec/generators/sorbet_test_cases.rb +15 -0
- data/spec/pluck_to_tstruct_spec.rb +51 -25
- data/spec/sorbet_spec.rb +1 -1
- data/spec/support/v5.0/Gemfile.lock +4 -4
- data/spec/support/v5.0/app/controllers/application_controller.rb +1 -1
- data/spec/support/v5.0/app/models/headmaster.rb +1 -1
- data/spec/support/v5.0/app/models/potion.rb +1 -1
- data/spec/support/v5.0/app/models/robe.rb +1 -1
- data/spec/support/v5.0/app/models/school.rb +1 -1
- data/spec/support/v5.0/app/models/spell.rb +1 -1
- data/spec/support/v5.0/app/models/subject.rb +1 -1
- data/spec/support/v5.0/app/models/wizard.rb +5 -0
- data/spec/support/v5.0/config/environments/development.rb +1 -1
- data/spec/support/v5.0/config/environments/production.rb +1 -1
- data/spec/support/v5.0/config/environments/test.rb +1 -1
- data/spec/support/v5.0/config/initializers/wrap_parameters.rb +1 -1
- data/spec/support/v5.0/config/routes.rb +1 -1
- data/spec/support/v5.0/db/migrate/20190620000015_add_serialized_to_wizards.rb +9 -0
- data/spec/support/v5.0/db/schema.rb +8 -4
- data/spec/support/v5.0/sorbet_test_cases.rb +15 -0
- data/spec/support/v5.1/Gemfile.lock +4 -4
- data/spec/support/v5.1/app/controllers/application_controller.rb +1 -1
- data/spec/support/v5.1/app/models/headmaster.rb +1 -1
- data/spec/support/v5.1/app/models/school.rb +1 -1
- data/spec/support/v5.1/app/models/wizard.rb +5 -0
- data/spec/support/v5.1/config/environments/production.rb +1 -1
- data/spec/support/v5.1/config/initializers/wrap_parameters.rb +1 -1
- data/spec/support/v5.1/config/routes.rb +1 -1
- data/spec/support/v5.1/db/migrate/20190620000015_add_serialized_to_wizards.rb +9 -0
- data/spec/support/v5.1/db/schema.rb +5 -1
- data/spec/support/v5.1/sorbet_test_cases.rb +15 -0
- data/spec/support/v5.2/Gemfile.lock +4 -4
- data/spec/support/v5.2/app/models/headmaster.rb +1 -1
- data/spec/support/v5.2/app/models/school.rb +1 -1
- data/spec/support/v5.2/app/models/wizard.rb +5 -0
- data/spec/support/v5.2/config/environments/development.rb +1 -1
- data/spec/support/v5.2/config/environments/production.rb +1 -1
- data/spec/support/v5.2/config/environments/test.rb +1 -1
- data/spec/support/v5.2/config/initializers/wrap_parameters.rb +1 -1
- data/spec/support/v5.2/config/routes.rb +1 -1
- data/spec/support/v5.2/db/migrate/20190620000015_add_serialized_to_wizards.rb +9 -0
- data/spec/support/v5.2/db/schema.rb +5 -1
- data/spec/support/v5.2/sorbet_test_cases.rb +15 -0
- data/spec/support/v6.0/Gemfile.lock +4 -4
- data/spec/support/v6.0/app/models/wizard.rb +5 -0
- data/spec/support/v6.0/config/environments/development.rb +1 -1
- data/spec/support/v6.0/config/environments/production.rb +1 -1
- data/spec/support/v6.0/config/environments/test.rb +1 -1
- data/spec/support/v6.0/config/routes.rb +1 -1
- data/spec/support/v6.0/db/migrate/20190620000015_add_serialized_to_wizards.rb +9 -0
- data/spec/support/v6.0/db/schema.rb +5 -1
- data/spec/support/v6.0/sorbet_test_cases.rb +15 -0
- data/spec/test_data/v5.0/expected_headmaster.rbi +6 -0
- data/spec/test_data/v5.0/expected_potion.rbi +3 -0
- data/spec/test_data/v5.0/expected_robe.rbi +3 -0
- data/spec/test_data/v5.0/expected_routes.rbi +4 -0
- data/spec/test_data/v5.0/expected_school.rbi +3 -0
- data/spec/test_data/v5.0/expected_spell/habtm_spell_books.rbi +6 -0
- data/spec/test_data/v5.0/expected_spell_book.rbi +3 -0
- data/spec/test_data/v5.0/expected_spell_book/habtm_spells.rbi +6 -0
- data/spec/test_data/v5.0/expected_squib.rbi +45 -0
- data/spec/test_data/v5.0/expected_subject/habtm_wizards.rbi +6 -0
- data/spec/test_data/v5.0/expected_wand.rbi +3 -0
- data/spec/test_data/v5.0/expected_wizard.rbi +45 -0
- data/spec/test_data/v5.0/expected_wizard/habtm_subjects.rbi +6 -0
- data/spec/test_data/v5.0/expected_wizard_wo_spellbook.rbi +45 -0
- data/spec/test_data/v5.1/expected_headmaster.rbi +6 -0
- data/spec/test_data/v5.1/expected_potion.rbi +3 -0
- data/spec/test_data/v5.1/expected_robe.rbi +3 -0
- data/spec/test_data/v5.1/expected_routes.rbi +4 -0
- data/spec/test_data/v5.1/expected_school.rbi +3 -0
- data/spec/test_data/v5.1/expected_spell/habtm_spell_books.rbi +6 -0
- data/spec/test_data/v5.1/expected_spell_book.rbi +3 -0
- data/spec/test_data/v5.1/expected_spell_book/habtm_spells.rbi +6 -0
- data/spec/test_data/v5.1/expected_squib.rbi +45 -0
- data/spec/test_data/v5.1/expected_subject/habtm_wizards.rbi +6 -0
- data/spec/test_data/v5.1/expected_wand.rbi +3 -0
- data/spec/test_data/v5.1/expected_wizard.rbi +45 -0
- data/spec/test_data/v5.1/expected_wizard/habtm_subjects.rbi +6 -0
- data/spec/test_data/v5.1/expected_wizard_wo_spellbook.rbi +45 -0
- data/spec/test_data/v5.2/expected_attachment.rbi +6 -0
- data/spec/test_data/v5.2/expected_blob.rbi +6 -0
- data/spec/test_data/v5.2/expected_headmaster.rbi +6 -0
- data/spec/test_data/v5.2/expected_potion.rbi +3 -0
- data/spec/test_data/v5.2/expected_robe.rbi +3 -0
- data/spec/test_data/v5.2/expected_routes.rbi +4 -0
- data/spec/test_data/v5.2/expected_school.rbi +3 -0
- data/spec/test_data/v5.2/expected_spell/habtm_spell_books.rbi +6 -0
- data/spec/test_data/v5.2/expected_spell_book.rbi +3 -0
- data/spec/test_data/v5.2/expected_spell_book/habtm_spells.rbi +6 -0
- data/spec/test_data/v5.2/expected_squib.rbi +51 -0
- data/spec/test_data/v5.2/expected_subject/habtm_wizards.rbi +6 -0
- data/spec/test_data/v5.2/expected_wand.rbi +3 -0
- data/spec/test_data/v5.2/expected_wizard.rbi +51 -0
- data/spec/test_data/v5.2/expected_wizard/habtm_subjects.rbi +6 -0
- data/spec/test_data/v5.2/expected_wizard_wo_spellbook.rbi +51 -0
- data/spec/test_data/v6.0/expected_attachment.rbi +6 -0
- data/spec/test_data/v6.0/expected_blob.rbi +6 -0
- data/spec/test_data/v6.0/expected_headmaster.rbi +6 -0
- data/spec/test_data/v6.0/expected_potion.rbi +3 -0
- data/spec/test_data/v6.0/expected_robe.rbi +3 -0
- data/spec/test_data/v6.0/expected_routes.rbi +4 -0
- data/spec/test_data/v6.0/expected_school.rbi +3 -0
- data/spec/test_data/v6.0/expected_spell/habtm_spell_books.rbi +6 -0
- data/spec/test_data/v6.0/expected_spell_book.rbi +3 -0
- data/spec/test_data/v6.0/expected_spell_book/habtm_spells.rbi +6 -0
- data/spec/test_data/v6.0/expected_squib.rbi +51 -0
- data/spec/test_data/v6.0/expected_subject/habtm_wizards.rbi +6 -0
- data/spec/test_data/v6.0/expected_wand.rbi +3 -0
- data/spec/test_data/v6.0/expected_wizard.rbi +51 -0
- data/spec/test_data/v6.0/expected_wizard/habtm_subjects.rbi +6 -0
- data/spec/test_data/v6.0/expected_wizard_wo_spellbook.rbi +51 -0
- data/spec/tstruct_comparable.rb +13 -0
- metadata +12 -1
data/spec/sorbet_spec.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ../../..
|
3
3
|
specs:
|
4
|
-
sorbet-rails (0.7.
|
4
|
+
sorbet-rails (0.7.3)
|
5
5
|
method_source (>= 0.9.2)
|
6
6
|
parlour (>= 4.0.1)
|
7
7
|
parser (>= 2.7)
|
@@ -76,12 +76,12 @@ GEM
|
|
76
76
|
nio4r (2.5.2)
|
77
77
|
nokogiri (1.10.9)
|
78
78
|
mini_portile2 (~> 2.4.0)
|
79
|
-
parlour (
|
79
|
+
parlour (5.0.0)
|
80
80
|
commander (~> 4.5)
|
81
81
|
parser
|
82
82
|
rainbow (~> 3.0)
|
83
83
|
sorbet-runtime (>= 0.5)
|
84
|
-
parser (
|
84
|
+
parser (3.0.0.0)
|
85
85
|
ast (~> 2.4.1)
|
86
86
|
polyfill (1.9.0)
|
87
87
|
puma (3.12.6)
|
@@ -116,7 +116,7 @@ GEM
|
|
116
116
|
safe_type (1.1.1)
|
117
117
|
sorbet (0.5.5480)
|
118
118
|
sorbet-static (= 0.5.5480)
|
119
|
-
sorbet-coerce (0.
|
119
|
+
sorbet-coerce (0.3.0)
|
120
120
|
polyfill (~> 1.8)
|
121
121
|
safe_type (~> 1.1, >= 1.1.1)
|
122
122
|
sorbet (>= 0.4.4704)
|
@@ -47,6 +47,11 @@ class Wizard < ApplicationRecord
|
|
47
47
|
blue: 2,
|
48
48
|
}, _prefix: :color, _suffix: :eyes
|
49
49
|
|
50
|
+
serialize :owl_results, Hash
|
51
|
+
serialize :newt_subjects # no specific data type, uses the default YAML Object coder
|
52
|
+
serialize :pets, Array
|
53
|
+
serialize :patronus_characteristics, JSON
|
54
|
+
|
50
55
|
has_one :wand
|
51
56
|
has_many :spell_books
|
52
57
|
# habtm which is optional at the db level
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# typed: false
|
2
|
+
class AddSerializedToWizards < ActiveRecord::Migration[5.0]
|
3
|
+
def change
|
4
|
+
add_column :wizards, :owl_results, :text # Hash
|
5
|
+
add_column :wizards, :newt_subjects, :text # generic
|
6
|
+
add_column :wizards, :pets, :text # Array
|
7
|
+
add_column :wizards, :patronus_characteristics, :text # serialized as JSON, but not a JSON column type
|
8
|
+
end
|
9
|
+
end
|
@@ -11,7 +11,7 @@
|
|
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: 20190620000015) do
|
15
15
|
|
16
16
|
create_table "headmasters", force: :cascade do |t|
|
17
17
|
t.integer "school_id"
|
@@ -78,15 +78,19 @@ ActiveRecord::Schema.define(version: 20190620000014) do
|
|
78
78
|
t.integer "professor"
|
79
79
|
t.string "parent_email"
|
80
80
|
t.text "notes"
|
81
|
-
t.datetime "created_at",
|
82
|
-
t.datetime "updated_at",
|
81
|
+
t.datetime "created_at", null: false
|
82
|
+
t.datetime "updated_at", null: false
|
83
83
|
t.string "broom"
|
84
84
|
t.integer "quidditch_position"
|
85
85
|
t.integer "hair_color"
|
86
86
|
t.integer "eye_color"
|
87
87
|
t.integer "hair_length"
|
88
|
-
t.string "type",
|
88
|
+
t.string "type", default: "Wizard", null: false
|
89
89
|
t.integer "school_id"
|
90
|
+
t.text "owl_results"
|
91
|
+
t.text "newt_subjects"
|
92
|
+
t.text "pets"
|
93
|
+
t.text "patronus_characteristics"
|
90
94
|
end
|
91
95
|
|
92
96
|
end
|
@@ -305,6 +305,21 @@ T.assert_type!(Wizard::House::Hufflepuff, Wizard::House)
|
|
305
305
|
T.assert_type!(Wizard::House::Ravenclaw, Wizard::House)
|
306
306
|
T.assert_type!(Wizard::House::Slytherin, Wizard::House)
|
307
307
|
|
308
|
+
# Serialization
|
309
|
+
T.assert_type!(
|
310
|
+
wizard.owl_results,
|
311
|
+
T.nilable(T::Hash[T.untyped, T.untyped])
|
312
|
+
)
|
313
|
+
T.assert_type!(
|
314
|
+
wizard.newt_subjects,
|
315
|
+
T.nilable(T.any(T::Array[T.untyped], T::Boolean, Float, T::Hash[T.untyped, T.untyped], Integer, String))
|
316
|
+
)
|
317
|
+
T.assert_type!(
|
318
|
+
wizard.patronus_characteristics,
|
319
|
+
T.nilable(T.any(T::Array[T.untyped], T::Boolean, Float, T::Hash[String, T.untyped], Integer, String))
|
320
|
+
)
|
321
|
+
T.assert_type!(wizard.pets, T.nilable(T::Array[T.untyped]))
|
322
|
+
|
308
323
|
# Mythical plugin
|
309
324
|
T.assert_type!(Wand.mythicals, T::Array[Wand])
|
310
325
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ../../..
|
3
3
|
specs:
|
4
|
-
sorbet-rails (0.7.
|
4
|
+
sorbet-rails (0.7.3)
|
5
5
|
method_source (>= 0.9.2)
|
6
6
|
parlour (>= 4.0.1)
|
7
7
|
parser (>= 2.7)
|
@@ -77,12 +77,12 @@ GEM
|
|
77
77
|
nio4r (2.5.2)
|
78
78
|
nokogiri (1.10.9)
|
79
79
|
mini_portile2 (~> 2.4.0)
|
80
|
-
parlour (
|
80
|
+
parlour (5.0.0)
|
81
81
|
commander (~> 4.5)
|
82
82
|
parser
|
83
83
|
rainbow (~> 3.0)
|
84
84
|
sorbet-runtime (>= 0.5)
|
85
|
-
parser (
|
85
|
+
parser (3.0.0.0)
|
86
86
|
ast (~> 2.4.1)
|
87
87
|
polyfill (1.9.0)
|
88
88
|
puma (3.12.4)
|
@@ -117,7 +117,7 @@ GEM
|
|
117
117
|
safe_type (1.1.1)
|
118
118
|
sorbet (0.5.5480)
|
119
119
|
sorbet-static (= 0.5.5480)
|
120
|
-
sorbet-coerce (0.
|
120
|
+
sorbet-coerce (0.3.0)
|
121
121
|
polyfill (~> 1.8)
|
122
122
|
safe_type (~> 1.1, >= 1.1.1)
|
123
123
|
sorbet (>= 0.4.4704)
|
@@ -47,6 +47,11 @@ class Wizard < ApplicationRecord
|
|
47
47
|
blue: 2,
|
48
48
|
}, _prefix: :color, _suffix: :eyes
|
49
49
|
|
50
|
+
serialize :owl_results, Hash
|
51
|
+
serialize :newt_subjects # no specific data type, uses the default YAML Object coder
|
52
|
+
serialize :pets, Array
|
53
|
+
serialize :patronus_characteristics, JSON
|
54
|
+
|
50
55
|
has_one :wand
|
51
56
|
has_many :spell_books
|
52
57
|
# habtm which is optional at the db level
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# typed: false
|
2
|
+
class AddSerializedToWizards < ActiveRecord::Migration[5.1]
|
3
|
+
def change
|
4
|
+
add_column :wizards, :owl_results, :text # Hash
|
5
|
+
add_column :wizards, :newt_subjects, :text # generic
|
6
|
+
add_column :wizards, :pets, :text # Array
|
7
|
+
add_column :wizards, :patronus_characteristics, :text # serialized as JSON, but not a JSON column type
|
8
|
+
end
|
9
|
+
end
|
@@ -11,7 +11,7 @@
|
|
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: 20190620000015) do
|
15
15
|
|
16
16
|
create_table "headmasters", force: :cascade do |t|
|
17
17
|
t.integer "school_id"
|
@@ -87,6 +87,10 @@ ActiveRecord::Schema.define(version: 20190620000014) do
|
|
87
87
|
t.integer "hair_length"
|
88
88
|
t.string "type", default: "Wizard", null: false
|
89
89
|
t.integer "school_id"
|
90
|
+
t.text "owl_results"
|
91
|
+
t.text "newt_subjects"
|
92
|
+
t.text "pets"
|
93
|
+
t.text "patronus_characteristics"
|
90
94
|
end
|
91
95
|
|
92
96
|
end
|
@@ -305,6 +305,21 @@ T.assert_type!(Wizard::House::Hufflepuff, Wizard::House)
|
|
305
305
|
T.assert_type!(Wizard::House::Ravenclaw, Wizard::House)
|
306
306
|
T.assert_type!(Wizard::House::Slytherin, Wizard::House)
|
307
307
|
|
308
|
+
# Serialization
|
309
|
+
T.assert_type!(
|
310
|
+
wizard.owl_results,
|
311
|
+
T.nilable(T::Hash[T.untyped, T.untyped])
|
312
|
+
)
|
313
|
+
T.assert_type!(
|
314
|
+
wizard.newt_subjects,
|
315
|
+
T.nilable(T.any(T::Array[T.untyped], T::Boolean, Float, T::Hash[T.untyped, T.untyped], Integer, String))
|
316
|
+
)
|
317
|
+
T.assert_type!(
|
318
|
+
wizard.patronus_characteristics,
|
319
|
+
T.nilable(T.any(T::Array[T.untyped], T::Boolean, Float, T::Hash[String, T.untyped], Integer, String))
|
320
|
+
)
|
321
|
+
T.assert_type!(wizard.pets, T.nilable(T::Array[T.untyped]))
|
322
|
+
|
308
323
|
# Mythical plugin
|
309
324
|
T.assert_type!(Wand.mythicals, T::Array[Wand])
|
310
325
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ../../..
|
3
3
|
specs:
|
4
|
-
sorbet-rails (0.7.
|
4
|
+
sorbet-rails (0.7.3)
|
5
5
|
method_source (>= 0.9.2)
|
6
6
|
parlour (>= 4.0.1)
|
7
7
|
parser (>= 2.7)
|
@@ -84,12 +84,12 @@ GEM
|
|
84
84
|
nio4r (2.5.2)
|
85
85
|
nokogiri (1.10.9)
|
86
86
|
mini_portile2 (~> 2.4.0)
|
87
|
-
parlour (
|
87
|
+
parlour (5.0.0)
|
88
88
|
commander (~> 4.5)
|
89
89
|
parser
|
90
90
|
rainbow (~> 3.0)
|
91
91
|
sorbet-runtime (>= 0.5)
|
92
|
-
parser (
|
92
|
+
parser (3.0.0.0)
|
93
93
|
ast (~> 2.4.1)
|
94
94
|
polyfill (1.9.0)
|
95
95
|
puma (3.12.6)
|
@@ -125,7 +125,7 @@ GEM
|
|
125
125
|
safe_type (1.1.1)
|
126
126
|
sorbet (0.5.5480)
|
127
127
|
sorbet-static (= 0.5.5480)
|
128
|
-
sorbet-coerce (0.
|
128
|
+
sorbet-coerce (0.3.0)
|
129
129
|
polyfill (~> 1.8)
|
130
130
|
safe_type (~> 1.1, >= 1.1.1)
|
131
131
|
sorbet (>= 0.4.4704)
|
@@ -47,6 +47,11 @@ class Wizard < ApplicationRecord
|
|
47
47
|
blue: 2,
|
48
48
|
}, _prefix: :color, _suffix: :eyes
|
49
49
|
|
50
|
+
serialize :owl_results, Hash
|
51
|
+
serialize :newt_subjects # no specific data type, uses the default YAML Object coder
|
52
|
+
serialize :pets, Array
|
53
|
+
serialize :patronus_characteristics, JSON
|
54
|
+
|
50
55
|
has_one :wand
|
51
56
|
has_many :spell_books
|
52
57
|
# habtm which is optional at the db level
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# typed: true
|
2
|
+
class AddSerializedToWizards < ActiveRecord::Migration[5.2]
|
3
|
+
def change
|
4
|
+
add_column :wizards, :owl_results, :text # Hash
|
5
|
+
add_column :wizards, :newt_subjects, :text # generic
|
6
|
+
add_column :wizards, :pets, :text # Array
|
7
|
+
add_column :wizards, :patronus_characteristics, :text # serialized as JSON, but not a JSON column type
|
8
|
+
end
|
9
|
+
end
|