sorbet-rails 0.7.2 → 0.7.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.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -1
  3. data/lib/sorbet-rails/config.rb +1 -0
  4. data/lib/sorbet-rails/dependent_gem_rbis/activerecord.rbi +3 -0
  5. data/lib/sorbet-rails/model_plugins/active_record_assoc.rb +17 -5
  6. data/lib/sorbet-rails/model_plugins/active_record_attribute.rb +2 -0
  7. data/lib/sorbet-rails/model_plugins/active_record_serialized_attribute.rb +68 -0
  8. data/lib/sorbet-rails/model_plugins/base.rb +8 -0
  9. data/lib/sorbet-rails/model_plugins/plugins.rb +3 -0
  10. data/lib/sorbet-rails/model_rbi_formatter.rb +3 -3
  11. data/lib/sorbet-rails/rails_mixins/pluck_to_tstruct.rb +39 -2
  12. data/lib/sorbet-rails/routes_rbi_formatter.rb +4 -0
  13. data/lib/sorbet-rails/tasks/rails_rbi.rake +4 -3
  14. data/sorbet-rails.gemspec +1 -1
  15. data/spec/bin/run_spec.sh +1 -1
  16. data/spec/generators/rails-template.rb +16 -0
  17. data/spec/generators/sorbet_test_cases.rb +15 -0
  18. data/spec/pluck_to_tstruct_spec.rb +51 -25
  19. data/spec/sorbet_spec.rb +1 -1
  20. data/spec/support/v5.0/Gemfile.lock +4 -4
  21. data/spec/support/v5.0/app/controllers/application_controller.rb +1 -1
  22. data/spec/support/v5.0/app/models/headmaster.rb +1 -1
  23. data/spec/support/v5.0/app/models/potion.rb +1 -1
  24. data/spec/support/v5.0/app/models/robe.rb +1 -1
  25. data/spec/support/v5.0/app/models/school.rb +1 -1
  26. data/spec/support/v5.0/app/models/spell.rb +1 -1
  27. data/spec/support/v5.0/app/models/subject.rb +1 -1
  28. data/spec/support/v5.0/app/models/wizard.rb +5 -0
  29. data/spec/support/v5.0/config/environments/development.rb +1 -1
  30. data/spec/support/v5.0/config/environments/production.rb +1 -1
  31. data/spec/support/v5.0/config/environments/test.rb +1 -1
  32. data/spec/support/v5.0/config/initializers/wrap_parameters.rb +1 -1
  33. data/spec/support/v5.0/config/routes.rb +1 -1
  34. data/spec/support/v5.0/db/migrate/20190620000015_add_serialized_to_wizards.rb +9 -0
  35. data/spec/support/v5.0/db/schema.rb +8 -4
  36. data/spec/support/v5.0/sorbet_test_cases.rb +15 -0
  37. data/spec/support/v5.1/Gemfile.lock +4 -4
  38. data/spec/support/v5.1/app/controllers/application_controller.rb +1 -1
  39. data/spec/support/v5.1/app/models/headmaster.rb +1 -1
  40. data/spec/support/v5.1/app/models/school.rb +1 -1
  41. data/spec/support/v5.1/app/models/wizard.rb +5 -0
  42. data/spec/support/v5.1/config/environments/production.rb +1 -1
  43. data/spec/support/v5.1/config/initializers/wrap_parameters.rb +1 -1
  44. data/spec/support/v5.1/config/routes.rb +1 -1
  45. data/spec/support/v5.1/db/migrate/20190620000015_add_serialized_to_wizards.rb +9 -0
  46. data/spec/support/v5.1/db/schema.rb +5 -1
  47. data/spec/support/v5.1/sorbet_test_cases.rb +15 -0
  48. data/spec/support/v5.2/Gemfile.lock +4 -4
  49. data/spec/support/v5.2/app/models/headmaster.rb +1 -1
  50. data/spec/support/v5.2/app/models/school.rb +1 -1
  51. data/spec/support/v5.2/app/models/wizard.rb +5 -0
  52. data/spec/support/v5.2/config/environments/development.rb +1 -1
  53. data/spec/support/v5.2/config/environments/production.rb +1 -1
  54. data/spec/support/v5.2/config/environments/test.rb +1 -1
  55. data/spec/support/v5.2/config/initializers/wrap_parameters.rb +1 -1
  56. data/spec/support/v5.2/config/routes.rb +1 -1
  57. data/spec/support/v5.2/db/migrate/20190620000015_add_serialized_to_wizards.rb +9 -0
  58. data/spec/support/v5.2/db/schema.rb +5 -1
  59. data/spec/support/v5.2/sorbet_test_cases.rb +15 -0
  60. data/spec/support/v6.0/Gemfile.lock +4 -4
  61. data/spec/support/v6.0/app/models/wizard.rb +5 -0
  62. data/spec/support/v6.0/config/environments/development.rb +1 -1
  63. data/spec/support/v6.0/config/environments/production.rb +1 -1
  64. data/spec/support/v6.0/config/environments/test.rb +1 -1
  65. data/spec/support/v6.0/config/routes.rb +1 -1
  66. data/spec/support/v6.0/db/migrate/20190620000015_add_serialized_to_wizards.rb +9 -0
  67. data/spec/support/v6.0/db/schema.rb +5 -1
  68. data/spec/support/v6.0/sorbet_test_cases.rb +15 -0
  69. data/spec/test_data/v5.0/expected_headmaster.rbi +6 -0
  70. data/spec/test_data/v5.0/expected_potion.rbi +3 -0
  71. data/spec/test_data/v5.0/expected_robe.rbi +3 -0
  72. data/spec/test_data/v5.0/expected_routes.rbi +4 -0
  73. data/spec/test_data/v5.0/expected_school.rbi +3 -0
  74. data/spec/test_data/v5.0/expected_spell/habtm_spell_books.rbi +6 -0
  75. data/spec/test_data/v5.0/expected_spell_book.rbi +3 -0
  76. data/spec/test_data/v5.0/expected_spell_book/habtm_spells.rbi +6 -0
  77. data/spec/test_data/v5.0/expected_squib.rbi +45 -0
  78. data/spec/test_data/v5.0/expected_subject/habtm_wizards.rbi +6 -0
  79. data/spec/test_data/v5.0/expected_wand.rbi +3 -0
  80. data/spec/test_data/v5.0/expected_wizard.rbi +45 -0
  81. data/spec/test_data/v5.0/expected_wizard/habtm_subjects.rbi +6 -0
  82. data/spec/test_data/v5.0/expected_wizard_wo_spellbook.rbi +45 -0
  83. data/spec/test_data/v5.1/expected_headmaster.rbi +6 -0
  84. data/spec/test_data/v5.1/expected_potion.rbi +3 -0
  85. data/spec/test_data/v5.1/expected_robe.rbi +3 -0
  86. data/spec/test_data/v5.1/expected_routes.rbi +4 -0
  87. data/spec/test_data/v5.1/expected_school.rbi +3 -0
  88. data/spec/test_data/v5.1/expected_spell/habtm_spell_books.rbi +6 -0
  89. data/spec/test_data/v5.1/expected_spell_book.rbi +3 -0
  90. data/spec/test_data/v5.1/expected_spell_book/habtm_spells.rbi +6 -0
  91. data/spec/test_data/v5.1/expected_squib.rbi +45 -0
  92. data/spec/test_data/v5.1/expected_subject/habtm_wizards.rbi +6 -0
  93. data/spec/test_data/v5.1/expected_wand.rbi +3 -0
  94. data/spec/test_data/v5.1/expected_wizard.rbi +45 -0
  95. data/spec/test_data/v5.1/expected_wizard/habtm_subjects.rbi +6 -0
  96. data/spec/test_data/v5.1/expected_wizard_wo_spellbook.rbi +45 -0
  97. data/spec/test_data/v5.2/expected_attachment.rbi +6 -0
  98. data/spec/test_data/v5.2/expected_blob.rbi +6 -0
  99. data/spec/test_data/v5.2/expected_headmaster.rbi +6 -0
  100. data/spec/test_data/v5.2/expected_potion.rbi +3 -0
  101. data/spec/test_data/v5.2/expected_robe.rbi +3 -0
  102. data/spec/test_data/v5.2/expected_routes.rbi +4 -0
  103. data/spec/test_data/v5.2/expected_school.rbi +3 -0
  104. data/spec/test_data/v5.2/expected_spell/habtm_spell_books.rbi +6 -0
  105. data/spec/test_data/v5.2/expected_spell_book.rbi +3 -0
  106. data/spec/test_data/v5.2/expected_spell_book/habtm_spells.rbi +6 -0
  107. data/spec/test_data/v5.2/expected_squib.rbi +51 -0
  108. data/spec/test_data/v5.2/expected_subject/habtm_wizards.rbi +6 -0
  109. data/spec/test_data/v5.2/expected_wand.rbi +3 -0
  110. data/spec/test_data/v5.2/expected_wizard.rbi +51 -0
  111. data/spec/test_data/v5.2/expected_wizard/habtm_subjects.rbi +6 -0
  112. data/spec/test_data/v5.2/expected_wizard_wo_spellbook.rbi +51 -0
  113. data/spec/test_data/v6.0/expected_attachment.rbi +6 -0
  114. data/spec/test_data/v6.0/expected_blob.rbi +6 -0
  115. data/spec/test_data/v6.0/expected_headmaster.rbi +6 -0
  116. data/spec/test_data/v6.0/expected_potion.rbi +3 -0
  117. data/spec/test_data/v6.0/expected_robe.rbi +3 -0
  118. data/spec/test_data/v6.0/expected_routes.rbi +4 -0
  119. data/spec/test_data/v6.0/expected_school.rbi +3 -0
  120. data/spec/test_data/v6.0/expected_spell/habtm_spell_books.rbi +6 -0
  121. data/spec/test_data/v6.0/expected_spell_book.rbi +3 -0
  122. data/spec/test_data/v6.0/expected_spell_book/habtm_spells.rbi +6 -0
  123. data/spec/test_data/v6.0/expected_squib.rbi +51 -0
  124. data/spec/test_data/v6.0/expected_subject/habtm_wizards.rbi +6 -0
  125. data/spec/test_data/v6.0/expected_wand.rbi +3 -0
  126. data/spec/test_data/v6.0/expected_wizard.rbi +51 -0
  127. data/spec/test_data/v6.0/expected_wizard/habtm_subjects.rbi +6 -0
  128. data/spec/test_data/v6.0/expected_wizard_wo_spellbook.rbi +51 -0
  129. data/spec/tstruct_comparable.rb +13 -0
  130. metadata +12 -1
@@ -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: 2019_06_20_000014) do
14
+ ActiveRecord::Schema.define(version: 2019_06_20_000015) do
15
15
 
16
16
  create_table "headmasters", force: :cascade do |t|
17
17
  t.integer "school_id"
@@ -89,6 +89,10 @@ ActiveRecord::Schema.define(version: 2019_06_20_000014) do
89
89
  t.integer "hair_length"
90
90
  t.string "type", default: "Wizard", null: false
91
91
  t.integer "school_id"
92
+ t.text "owl_results"
93
+ t.text "newt_subjects"
94
+ t.text "pets"
95
+ t.text "patronus_characteristics"
92
96
  end
93
97
 
94
98
  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.2)
4
+ sorbet-rails (0.7.3)
5
5
  method_source (>= 0.9.2)
6
6
  parlour (>= 4.0.1)
7
7
  parser (>= 2.7)
@@ -97,12 +97,12 @@ GEM
97
97
  nio4r (2.5.2)
98
98
  nokogiri (1.10.10)
99
99
  mini_portile2 (~> 2.4.0)
100
- parlour (4.0.1)
100
+ parlour (5.0.0)
101
101
  commander (~> 4.5)
102
102
  parser
103
103
  rainbow (~> 3.0)
104
104
  sorbet-runtime (>= 0.5)
105
- parser (2.7.2.0)
105
+ parser (3.0.0.0)
106
106
  ast (~> 2.4.1)
107
107
  polyfill (1.9.0)
108
108
  puma (4.3.5)
@@ -141,7 +141,7 @@ GEM
141
141
  safe_type (1.1.1)
142
142
  sorbet (0.5.5815)
143
143
  sorbet-static (= 0.5.5815)
144
- sorbet-coerce (0.2.7)
144
+ sorbet-coerce (0.3.0)
145
145
  polyfill (~> 1.8)
146
146
  safe_type (~> 1.1, >= 1.1.1)
147
147
  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
@@ -1,4 +1,4 @@
1
- # typed: strict
1
+ # typed: false
2
2
  Rails.application.configure do
3
3
  # Settings specified here will take precedence over those in config/application.rb.
4
4
 
@@ -1,4 +1,4 @@
1
- # typed: strict
1
+ # typed: false
2
2
  Rails.application.configure do
3
3
  # Settings specified here will take precedence over those in config/application.rb.
4
4
 
@@ -1,4 +1,4 @@
1
- # typed: strict
1
+ # typed: false
2
2
  # The test environment is used exclusively to run your application's
3
3
  # test suite. You never need to work with it otherwise. Remember that
4
4
  # your test database is "scratch space" for the test suite and is wiped
@@ -1,4 +1,4 @@
1
- # typed: strict
1
+ # typed: false
2
2
  Rails.application.routes.draw do
3
3
  get 'test/index' => 'test#index'
4
4
  # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
@@ -0,0 +1,9 @@
1
+ # typed: true
2
+ class AddSerializedToWizards < ActiveRecord::Migration[6.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: 2019_06_20_000014) do
14
+ ActiveRecord::Schema.define(version: 2019_06_20_000015) do
15
15
 
16
16
  create_table "headmasters", force: :cascade do |t|
17
17
  t.integer "school_id"
@@ -89,6 +89,10 @@ ActiveRecord::Schema.define(version: 2019_06_20_000014) do
89
89
  t.integer "hair_length"
90
90
  t.string "type", default: "Wizard", null: false
91
91
  t.integer "school_id"
92
+ t.text "owl_results"
93
+ t.text "newt_subjects"
94
+ t.text "pets"
95
+ t.text "patronus_characteristics"
92
96
  end
93
97
 
94
98
  add_foreign_key "wizards", "schools"
@@ -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
 
@@ -52,6 +52,9 @@ module Headmaster::GeneratedAssociationMethods
52
52
  sig { params(value: ::School).void }
53
53
  def school=(value); end
54
54
 
55
+ sig { returns(::School) }
56
+ def reload_school; end
57
+
55
58
  sig { returns(::Wizard) }
56
59
  def wizard; end
57
60
 
@@ -66,6 +69,9 @@ module Headmaster::GeneratedAssociationMethods
66
69
 
67
70
  sig { params(value: ::Wizard).void }
68
71
  def wizard=(value); end
72
+
73
+ sig { returns(::Wizard) }
74
+ def reload_wizard; end
69
75
  end
70
76
 
71
77
  module Headmaster::CustomFinderMethods
@@ -22,6 +22,9 @@ module Potion::GeneratedAssociationMethods
22
22
 
23
23
  sig { params(value: T.nilable(::Wizard)).void }
24
24
  def wizard=(value); end
25
+
26
+ sig { returns(T.nilable(::Wizard)) }
27
+ def reload_wizard; end
25
28
  end
26
29
 
27
30
  module Potion::CustomFinderMethods
@@ -42,6 +42,9 @@ module Robe::GeneratedAssociationMethods
42
42
 
43
43
  sig { params(value: T.nilable(::Wizard)).void }
44
44
  def wizard=(value); end
45
+
46
+ sig { returns(T.nilable(::Wizard)) }
47
+ def reload_wizard; end
45
48
  end
46
49
 
47
50
  module Robe::CustomFinderMethods
@@ -5,6 +5,10 @@ class ActionController::Base
5
5
  include GeneratedUrlHelpers
6
6
  end
7
7
 
8
+ class ActionController::API
9
+ include GeneratedUrlHelpers
10
+ end
11
+
8
12
  module ActionView::Helpers
9
13
  include GeneratedUrlHelpers
10
14
  end
@@ -42,6 +42,9 @@ module School::GeneratedAssociationMethods
42
42
 
43
43
  sig { params(value: ::Headmaster).void }
44
44
  def headmaster=(value); end
45
+
46
+ sig { returns(::Headmaster) }
47
+ def reload_headmaster; end
45
48
  end
46
49
 
47
50
  module School::CustomFinderMethods
@@ -43,6 +43,9 @@ module Spell::HABTM_SpellBooks::GeneratedAssociationMethods
43
43
  sig { params(value: T.nilable(::Spell)).void }
44
44
  def left_side=(value); end
45
45
 
46
+ sig { returns(T.nilable(::Spell)) }
47
+ def reload_left_side; end
48
+
46
49
  sig { returns(::SpellBook) }
47
50
  def spell_book; end
48
51
 
@@ -57,6 +60,9 @@ module Spell::HABTM_SpellBooks::GeneratedAssociationMethods
57
60
 
58
61
  sig { params(value: ::SpellBook).void }
59
62
  def spell_book=(value); end
63
+
64
+ sig { returns(::SpellBook) }
65
+ def reload_spell_book; end
60
66
  end
61
67
 
62
68
  module Spell::HABTM_SpellBooks::CustomFinderMethods
@@ -89,6 +89,9 @@ module SpellBook::GeneratedAssociationMethods
89
89
 
90
90
  sig { params(value: ::Wizard).void }
91
91
  def wizard=(value); end
92
+
93
+ sig { returns(::Wizard) }
94
+ def reload_wizard; end
92
95
  end
93
96
 
94
97
  module SpellBook::CustomFinderMethods
@@ -43,6 +43,9 @@ module SpellBook::HABTM_Spells::GeneratedAssociationMethods
43
43
  sig { params(value: T.nilable(::SpellBook)).void }
44
44
  def left_side=(value); end
45
45
 
46
+ sig { returns(T.nilable(::SpellBook)) }
47
+ def reload_left_side; end
48
+
46
49
  sig { returns(::Spell) }
47
50
  def spell; end
48
51
 
@@ -57,6 +60,9 @@ module SpellBook::HABTM_Spells::GeneratedAssociationMethods
57
60
 
58
61
  sig { params(value: ::Spell).void }
59
62
  def spell=(value); end
63
+
64
+ sig { returns(::Spell) }
65
+ def reload_spell; end
60
66
  end
61
67
 
62
68
  module SpellBook::HABTM_Spells::CustomFinderMethods
@@ -111,6 +111,44 @@ module Squib::ActiveRelation_WhereNot
111
111
  def not(opts, *rest); end
112
112
  end
113
113
 
114
+ module Squib::GeneratedSerializedAttributeMethods
115
+ sig { returns(T.nilable(T.any(T::Array[T.untyped], T::Boolean, Float, T::Hash[T.untyped, T.untyped], Integer, String))) }
116
+ def newt_subjects; end
117
+
118
+ sig { params(value: T.nilable(T.any(T::Array[T.untyped], T::Boolean, Float, T::Hash[T.untyped, T.untyped], Integer, String))).void }
119
+ def newt_subjects=(value); end
120
+
121
+ sig { returns(T::Boolean) }
122
+ def newt_subjects?; end
123
+
124
+ sig { returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
125
+ def owl_results; end
126
+
127
+ sig { params(value: T.nilable(T::Hash[T.untyped, T.untyped])).void }
128
+ def owl_results=(value); end
129
+
130
+ sig { returns(T::Boolean) }
131
+ def owl_results?; end
132
+
133
+ sig { returns(T.nilable(T.any(T::Array[T.untyped], T::Boolean, Float, T::Hash[T.untyped, T.untyped], Integer, String))) }
134
+ def patronus_characteristics; end
135
+
136
+ sig { params(value: T.nilable(T.any(T::Array[T.untyped], T::Boolean, Float, T::Hash[T.untyped, T.untyped], Integer, String))).void }
137
+ def patronus_characteristics=(value); end
138
+
139
+ sig { returns(T::Boolean) }
140
+ def patronus_characteristics?; end
141
+
142
+ sig { returns(T.nilable(T::Array[T.untyped])) }
143
+ def pets; end
144
+
145
+ sig { params(value: T.nilable(T::Array[T.untyped])).void }
146
+ def pets=(value); end
147
+
148
+ sig { returns(T::Boolean) }
149
+ def pets?; end
150
+ end
151
+
114
152
  module Squib::GeneratedAttributeMethods
115
153
  sig { returns(T.nilable(String)) }
116
154
  def broom; end
@@ -264,6 +302,9 @@ module Squib::GeneratedAssociationMethods
264
302
  sig { params(value: T.nilable(::School)).void }
265
303
  def school=(value); end
266
304
 
305
+ sig { returns(T.nilable(::School)) }
306
+ def reload_school; end
307
+
267
308
  sig { returns(::SpellBook::ActiveRecord_Associations_CollectionProxy) }
268
309
  def spell_books; end
269
310
 
@@ -296,6 +337,9 @@ module Squib::GeneratedAssociationMethods
296
337
 
297
338
  sig { params(value: T.nilable(::Wand)).void }
298
339
  def wand=(value); end
340
+
341
+ sig { returns(T.nilable(::Wand)) }
342
+ def reload_wand; end
299
343
  end
300
344
 
301
345
  module Squib::CustomFinderMethods
@@ -317,6 +361,7 @@ end
317
361
 
318
362
  class Squib < Wizard
319
363
  include Squib::EnumInstanceMethods
364
+ include Squib::GeneratedSerializedAttributeMethods
320
365
  include Squib::GeneratedAttributeMethods
321
366
  include Squib::GeneratedAssociationMethods
322
367
  extend Squib::CustomFinderMethods
@@ -43,6 +43,9 @@ module Subject::HABTM_Wizards::GeneratedAssociationMethods
43
43
  sig { params(value: T.nilable(::Subject)).void }
44
44
  def left_side=(value); end
45
45
 
46
+ sig { returns(T.nilable(::Subject)) }
47
+ def reload_left_side; end
48
+
46
49
  sig { returns(T.nilable(::Wizard)) }
47
50
  def wizard; end
48
51
 
@@ -57,6 +60,9 @@ module Subject::HABTM_Wizards::GeneratedAssociationMethods
57
60
 
58
61
  sig { params(value: T.nilable(::Wizard)).void }
59
62
  def wizard=(value); end
63
+
64
+ sig { returns(T.nilable(::Wizard)) }
65
+ def reload_wizard; end
60
66
  end
61
67
 
62
68
  module Subject::HABTM_Wizards::CustomFinderMethods
@@ -167,6 +167,9 @@ module Wand::GeneratedAssociationMethods
167
167
 
168
168
  sig { params(value: ::Wizard).void }
169
169
  def wizard=(value); end
170
+
171
+ sig { returns(::Wizard) }
172
+ def reload_wizard; end
170
173
  end
171
174
 
172
175
  module Wand::CustomFinderMethods
@@ -111,6 +111,44 @@ module Wizard::ActiveRelation_WhereNot
111
111
  def not(opts, *rest); end
112
112
  end
113
113
 
114
+ module Wizard::GeneratedSerializedAttributeMethods
115
+ sig { returns(T.nilable(T.any(T::Array[T.untyped], T::Boolean, Float, T::Hash[T.untyped, T.untyped], Integer, String))) }
116
+ def newt_subjects; end
117
+
118
+ sig { params(value: T.nilable(T.any(T::Array[T.untyped], T::Boolean, Float, T::Hash[T.untyped, T.untyped], Integer, String))).void }
119
+ def newt_subjects=(value); end
120
+
121
+ sig { returns(T::Boolean) }
122
+ def newt_subjects?; end
123
+
124
+ sig { returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
125
+ def owl_results; end
126
+
127
+ sig { params(value: T.nilable(T::Hash[T.untyped, T.untyped])).void }
128
+ def owl_results=(value); end
129
+
130
+ sig { returns(T::Boolean) }
131
+ def owl_results?; end
132
+
133
+ sig { returns(T.nilable(T.any(T::Array[T.untyped], T::Boolean, Float, T::Hash[T.untyped, T.untyped], Integer, String))) }
134
+ def patronus_characteristics; end
135
+
136
+ sig { params(value: T.nilable(T.any(T::Array[T.untyped], T::Boolean, Float, T::Hash[T.untyped, T.untyped], Integer, String))).void }
137
+ def patronus_characteristics=(value); end
138
+
139
+ sig { returns(T::Boolean) }
140
+ def patronus_characteristics?; end
141
+
142
+ sig { returns(T.nilable(T::Array[T.untyped])) }
143
+ def pets; end
144
+
145
+ sig { params(value: T.nilable(T::Array[T.untyped])).void }
146
+ def pets=(value); end
147
+
148
+ sig { returns(T::Boolean) }
149
+ def pets?; end
150
+ end
151
+
114
152
  module Wizard::GeneratedAttributeMethods
115
153
  sig { returns(T::Boolean) }
116
154
  def broom?; end
@@ -246,6 +284,9 @@ module Wizard::GeneratedAssociationMethods
246
284
  sig { params(value: T.nilable(::School)).void }
247
285
  def school=(value); end
248
286
 
287
+ sig { returns(T.nilable(::School)) }
288
+ def reload_school; end
289
+
249
290
  sig { returns(::SpellBook::ActiveRecord_Associations_CollectionProxy) }
250
291
  def spell_books; end
251
292
 
@@ -278,6 +319,9 @@ module Wizard::GeneratedAssociationMethods
278
319
 
279
320
  sig { params(value: T.nilable(::Wand)).void }
280
321
  def wand=(value); end
322
+
323
+ sig { returns(T.nilable(::Wand)) }
324
+ def reload_wand; end
281
325
  end
282
326
 
283
327
  module Wizard::CustomFinderMethods
@@ -299,6 +343,7 @@ end
299
343
 
300
344
  class Wizard < ApplicationRecord
301
345
  include Wizard::EnumInstanceMethods
346
+ include Wizard::GeneratedSerializedAttributeMethods
302
347
  include Wizard::GeneratedAttributeMethods
303
348
  include Wizard::GeneratedAssociationMethods
304
349
  extend Wizard::CustomFinderMethods