sorbet-rails 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (171) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +13 -1
  3. data/.travis.yml +2 -2
  4. data/Gemfile +1 -1
  5. data/README.md +79 -3
  6. data/lib/sorbet-rails.rb +5 -1
  7. data/lib/sorbet-rails/activerecord.rbi +27 -0
  8. data/lib/sorbet-rails/custom_finder_methods.rb +11 -0
  9. data/lib/sorbet-rails/helper_rbi_formatter.rb +33 -0
  10. data/lib/sorbet-rails/model_plugins/active_record_assoc.rb +91 -0
  11. data/lib/sorbet-rails/model_plugins/active_record_attribute.rb +111 -0
  12. data/lib/sorbet-rails/model_plugins/active_record_enum.rb +43 -0
  13. data/lib/sorbet-rails/model_plugins/active_record_finder_methods.rb +80 -0
  14. data/lib/sorbet-rails/model_plugins/active_record_named_scope.rb +28 -0
  15. data/lib/sorbet-rails/model_plugins/active_record_querying.rb +42 -0
  16. data/lib/sorbet-rails/model_plugins/active_relation_where_not.rb +28 -0
  17. data/lib/sorbet-rails/model_plugins/base.rb +33 -0
  18. data/lib/sorbet-rails/model_plugins/custom_finder_methods.rb +54 -0
  19. data/lib/sorbet-rails/model_plugins/enumerable_collections.rb +49 -0
  20. data/lib/sorbet-rails/model_plugins/plugins.rb +45 -0
  21. data/lib/sorbet-rails/model_rbi_formatter.rb +108 -362
  22. data/lib/sorbet-rails/model_utils.rb +45 -0
  23. data/lib/sorbet-rails/railtie.rb +1 -0
  24. data/lib/sorbet-rails/routes_rbi_formatter.rb +12 -3
  25. data/lib/sorbet-rails/tasks/rails_rbi.rake +36 -15
  26. data/lib/sorbet-rails/utils.rb +4 -0
  27. data/sorbet-rails.gemspec +4 -2
  28. data/spec/helper_rbi_formatter_spec.rb +13 -0
  29. data/spec/model_plugins_spec.rb +31 -0
  30. data/spec/model_rbi_formatter_spec.rb +5 -5
  31. data/spec/rake_rails_rbi_helpers_spec.rb +14 -0
  32. data/spec/routes_rbi_formatter_spec.rb +3 -3
  33. data/spec/sorbet_spec.rb +12 -16
  34. data/spec/support/rails_shared/app/controllers/application_controller.rb +1 -1
  35. data/spec/support/rails_shared/app/helpers/bar_helper.rb +2 -0
  36. data/spec/support/rails_shared/app/helpers/baz_helper.rb +2 -0
  37. data/spec/support/rails_shared/app/helpers/foo_helper.rb +2 -0
  38. data/spec/support/rails_shared/app/models/concerns/mythical.rb +10 -0
  39. data/spec/support/rails_shared/app/models/wand.rb +1 -0
  40. data/spec/support/rails_shared/config/initializers/sorbet_rails.rb +3 -0
  41. data/spec/support/rails_shared/lib/mythical_rbi_plugin.rb +16 -0
  42. data/spec/support/rails_shared/sorbet_test_cases.rb +5 -2
  43. data/spec/support/rails_shared/typed-override.yaml +2 -0
  44. data/spec/support/rails_symlinks/app/helpers +1 -0
  45. data/spec/support/rails_symlinks/config/initializers/sorbet_rails.rb +1 -0
  46. data/spec/support/rails_symlinks/lib/mythical_rbi_plugin.rb +1 -0
  47. data/spec/support/rails_symlinks/typed-override.yaml +1 -0
  48. data/spec/support/v4.2/Gemfile.lock +5 -0
  49. data/spec/support/v4.2/app/helpers +1 -0
  50. data/spec/support/v4.2/config/initializers/sorbet_rails.rb +1 -0
  51. data/spec/support/v4.2/config/routes.rb +0 -1
  52. data/spec/support/v4.2/lib/mythical_rbi_plugin.rb +1 -0
  53. data/spec/support/v4.2/sorbet/rbi/sorbet-typed/lib/activerecord/all/activerecord.rbi +1 -1
  54. data/spec/support/v4.2/sorbet/rbi/sorbet-typed/lib/activesupport/all/activesupport.rbi +1 -1
  55. data/spec/support/v4.2/typed-override.yaml +1 -0
  56. data/spec/support/v5.0/Gemfile.lock +5 -0
  57. data/spec/support/v5.0/app/helpers +1 -0
  58. data/spec/support/v5.0/config/initializers/sorbet_rails.rb +1 -0
  59. data/spec/support/v5.0/config/routes.rb +0 -1
  60. data/spec/support/v5.0/lib/mythical_rbi_plugin.rb +1 -0
  61. data/spec/support/v5.0/sorbet/rbi/sorbet-typed/lib/activerecord/all/activerecord.rbi +1 -1
  62. data/spec/support/v5.0/sorbet/rbi/sorbet-typed/lib/activesupport/all/activesupport.rbi +1 -1
  63. data/spec/support/v5.0/typed-override.yaml +1 -0
  64. data/spec/support/v5.1/Gemfile.lock +5 -0
  65. data/spec/support/v5.1/app/helpers +1 -0
  66. data/spec/support/v5.1/config/initializers/sorbet_rails.rb +1 -0
  67. data/spec/support/v5.1/lib/mythical_rbi_plugin.rb +1 -0
  68. data/spec/support/v5.1/sorbet/rbi/sorbet-typed/lib/activerecord/all/activerecord.rbi +1 -1
  69. data/spec/support/v5.1/sorbet/rbi/sorbet-typed/lib/activesupport/all/activesupport.rbi +1 -1
  70. data/spec/support/v5.1/typed-override.yaml +1 -0
  71. data/spec/support/v5.2-no-sorbet/Gemfile +0 -2
  72. data/spec/support/v5.2-no-sorbet/Gemfile.lock +7 -5
  73. data/spec/support/v5.2-no-sorbet/app/helpers +1 -0
  74. data/spec/support/v5.2-no-sorbet/config/initializers/sorbet_rails.rb +1 -0
  75. data/spec/support/v5.2-no-sorbet/lib/mythical_rbi_plugin.rb +1 -0
  76. data/spec/support/v5.2-no-sorbet/sorbet_test_cases.rb +1 -0
  77. data/spec/support/v5.2-no-sorbet/typed-override.yaml +1 -0
  78. data/spec/support/v5.2/Gemfile +0 -2
  79. data/spec/support/v5.2/Gemfile.lock +7 -5
  80. data/spec/support/v5.2/app/helpers +1 -0
  81. data/spec/support/v5.2/config/initializers/sorbet_rails.rb +1 -0
  82. data/spec/support/v5.2/lib/mythical_rbi_plugin.rb +1 -0
  83. data/spec/support/v5.2/sorbet/rbi/sorbet-typed/lib/activerecord/all/activerecord.rbi +1 -1
  84. data/spec/support/v5.2/sorbet/rbi/sorbet-typed/lib/activesupport/all/activesupport.rbi +1 -1
  85. data/spec/support/v5.2/typed-override.yaml +1 -0
  86. data/spec/support/v6.0/Gemfile +1 -3
  87. data/spec/support/v6.0/Gemfile.lock +61 -59
  88. data/spec/support/v6.0/app/helpers +1 -0
  89. data/spec/support/v6.0/config/initializers/sorbet_rails.rb +1 -0
  90. data/spec/support/v6.0/config/routes.rb +0 -1
  91. data/spec/support/v6.0/lib/mythical_rbi_plugin.rb +1 -0
  92. data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/activerecord/all/activerecord.rbi +1 -1
  93. data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/activesupport/all/activesupport.rbi +1 -1
  94. data/spec/support/v6.0/typed-override.yaml +1 -0
  95. data/spec/test_data/v4.2/expected_helpers.rbi +17 -0
  96. data/spec/test_data/v4.2/expected_potion.rbi +259 -28
  97. data/spec/test_data/v4.2/expected_spell_book.rbi +278 -37
  98. data/spec/test_data/v4.2/expected_srb_tc_output.txt +1 -99
  99. data/spec/test_data/v4.2/expected_wand.rbi +345 -96
  100. data/spec/test_data/v4.2/expected_wizard.rbi +322 -76
  101. data/spec/test_data/v4.2/expected_wizard_wo_spellbook.rbi +322 -76
  102. data/spec/test_data/v5.0/expected_helpers.rbi +17 -0
  103. data/spec/test_data/v5.0/expected_internal_metadata.rbi +273 -37
  104. data/spec/test_data/v5.0/expected_potion.rbi +259 -28
  105. data/spec/test_data/v5.0/expected_schema_migration.rbi +264 -28
  106. data/spec/test_data/v5.0/expected_spell_book.rbi +278 -37
  107. data/spec/test_data/v5.0/expected_srb_tc_output.txt +1 -81
  108. data/spec/test_data/v5.0/expected_wand.rbi +341 -92
  109. data/spec/test_data/v5.0/expected_wizard.rbi +318 -72
  110. data/spec/test_data/v5.0/expected_wizard_wo_spellbook.rbi +318 -72
  111. data/spec/test_data/v5.1/expected_helpers.rbi +17 -0
  112. data/spec/test_data/v5.1/expected_internal_metadata.rbi +273 -37
  113. data/spec/test_data/v5.1/expected_potion.rbi +259 -28
  114. data/spec/test_data/v5.1/expected_schema_migration.rbi +264 -28
  115. data/spec/test_data/v5.1/expected_spell_book.rbi +278 -37
  116. data/spec/test_data/v5.1/expected_srb_tc_output.txt +1 -81
  117. data/spec/test_data/v5.1/expected_wand.rbi +341 -92
  118. data/spec/test_data/v5.1/expected_wizard.rbi +318 -72
  119. data/spec/test_data/v5.1/expected_wizard_wo_spellbook.rbi +318 -72
  120. data/spec/test_data/v5.2-no-sorbet/expected_attachment.rbi +265 -29
  121. data/spec/test_data/v5.2-no-sorbet/expected_blob.rbi +271 -35
  122. data/spec/test_data/v5.2-no-sorbet/expected_helpers.rbi +17 -0
  123. data/spec/test_data/v5.2-no-sorbet/expected_internal_metadata.rbi +273 -37
  124. data/spec/test_data/v5.2-no-sorbet/expected_potion.rbi +259 -28
  125. data/spec/test_data/v5.2-no-sorbet/expected_schema_migration.rbi +264 -28
  126. data/spec/test_data/v5.2-no-sorbet/expected_spell_book.rbi +278 -37
  127. data/spec/test_data/v5.2-no-sorbet/expected_srb_tc_output.txt +1 -81
  128. data/spec/test_data/v5.2-no-sorbet/expected_wand.rbi +351 -102
  129. data/spec/test_data/v5.2-no-sorbet/expected_wizard.rbi +318 -72
  130. data/spec/test_data/v5.2-no-sorbet/expected_wizard_wo_spellbook.rbi +318 -72
  131. data/spec/test_data/v5.2/expected_attachment.rbi +265 -29
  132. data/spec/test_data/v5.2/expected_blob.rbi +271 -35
  133. data/spec/test_data/v5.2/expected_helpers.rbi +17 -0
  134. data/spec/test_data/v5.2/expected_internal_metadata.rbi +273 -37
  135. data/spec/test_data/v5.2/expected_potion.rbi +259 -28
  136. data/spec/test_data/v5.2/expected_schema_migration.rbi +264 -28
  137. data/spec/test_data/v5.2/expected_spell_book.rbi +278 -37
  138. data/spec/test_data/v5.2/expected_srb_tc_output.txt +1 -81
  139. data/spec/test_data/v5.2/expected_wand.rbi +351 -102
  140. data/spec/test_data/v5.2/expected_wizard.rbi +318 -72
  141. data/spec/test_data/v5.2/expected_wizard_wo_spellbook.rbi +318 -72
  142. data/spec/test_data/v6.0/expected_attachment.rbi +265 -29
  143. data/spec/test_data/v6.0/expected_blob.rbi +271 -35
  144. data/spec/test_data/v6.0/expected_helpers.rbi +17 -0
  145. data/spec/test_data/v6.0/expected_internal_metadata.rbi +273 -37
  146. data/spec/test_data/v6.0/expected_potion.rbi +259 -28
  147. data/spec/test_data/v6.0/expected_schema_migration.rbi +264 -28
  148. data/spec/test_data/v6.0/expected_spell_book.rbi +278 -37
  149. data/spec/test_data/v6.0/expected_srb_tc_output.txt +1 -81
  150. data/spec/test_data/v6.0/expected_wand.rbi +351 -102
  151. data/spec/test_data/v6.0/expected_wizard.rbi +318 -72
  152. data/spec/test_data/v6.0/expected_wizard_wo_spellbook.rbi +318 -72
  153. metadata +120 -37
  154. data/lib/sorbet-rails/rbi/activerecord.rbi +0 -207
  155. data/spec/support/v4.2/app/helpers/application_helper.rb +0 -3
  156. data/spec/support/v4.2/sorbet/rbi/gems/sorbet-runtime.rbi +0 -647
  157. data/spec/support/v4.2/sorbet/rbi/hidden-definitions/errors.txt +0 -11998
  158. data/spec/support/v4.2/sorbet/rbi/hidden-definitions/hidden.rbi +0 -27774
  159. data/spec/support/v5.0/sorbet/rbi/gems/sorbet-runtime.rbi +0 -647
  160. data/spec/support/v5.0/sorbet/rbi/hidden-definitions/errors.txt +0 -10523
  161. data/spec/support/v5.0/sorbet/rbi/hidden-definitions/hidden.rbi +0 -24969
  162. data/spec/support/v5.1/sorbet/rbi/gems/sorbet-runtime.rbi +0 -647
  163. data/spec/support/v5.1/sorbet/rbi/hidden-definitions/errors.txt +0 -10226
  164. data/spec/support/v5.1/sorbet/rbi/hidden-definitions/hidden.rbi +0 -24635
  165. data/spec/support/v5.2/.ruby-version +0 -1
  166. data/spec/support/v5.2/sorbet/rbi/gems/sorbet-runtime.rbi +0 -644
  167. data/spec/support/v5.2/sorbet/rbi/hidden-definitions/errors.txt +0 -10046
  168. data/spec/support/v5.2/sorbet/rbi/hidden-definitions/hidden.rbi +0 -24424
  169. data/spec/support/v6.0/sorbet/rbi/gems/sorbet-runtime.rbi +0 -647
  170. data/spec/support/v6.0/sorbet/rbi/hidden-definitions/errors.txt +0 -12074
  171. data/spec/support/v6.0/sorbet/rbi/hidden-definitions/hidden.rbi +0 -28231
@@ -1,159 +1,228 @@
1
1
  # This is an autogenerated file for dynamic methods in Wizard
2
- # Please rerun rake rails_rbi:models to regenerate.
3
- # typed: strong
2
+ # Please rerun rake rails_rbi:models[Wizard] to regenerate.
4
3
 
5
- class Wizard::ActiveRecord_Relation < ActiveRecord::Relation
6
- include Wizard::ModelRelationShared
7
- extend T::Generic
8
- Elem = type_member(fixed: Wizard)
9
- end
10
-
11
- class Wizard::ActiveRecord_Associations_CollectionProxy < ActiveRecord::Associations::CollectionProxy
12
- include Wizard::ModelRelationShared
13
- extend T::Generic
14
- Elem = type_member(fixed: Wizard)
15
- end
16
-
17
- class Wizard < ApplicationRecord
4
+ # typed: strong
5
+ module Wizard::EnumInstanceMethods
18
6
  extend T::Sig
19
- extend T::Generic
20
- extend Wizard::ModelRelationShared
21
- include Wizard::InstanceMethods
22
- Elem = type_template(fixed: Wizard)
23
- end
24
7
 
25
- module Wizard::InstanceMethods
26
- extend T::Sig
8
+ sig { returns(T::Boolean) }
9
+ def Gryffindor?; end
27
10
 
28
11
  sig { void }
29
- def Gryffindor!(); end
12
+ def Gryffindor!; end
30
13
 
31
14
  sig { returns(T::Boolean) }
32
- def Gryffindor?(); end
15
+ def Hufflepuff?; end
33
16
 
34
17
  sig { void }
35
- def Hufflepuff!(); end
18
+ def Hufflepuff!; end
36
19
 
37
20
  sig { returns(T::Boolean) }
38
- def Hufflepuff?(); end
21
+ def Ravenclaw?; end
39
22
 
40
23
  sig { void }
41
- def Ravenclaw!(); end
24
+ def Ravenclaw!; end
42
25
 
43
26
  sig { returns(T::Boolean) }
44
- def Ravenclaw?(); end
27
+ def Slytherin?; end
45
28
 
46
29
  sig { void }
47
- def Slytherin!(); end
30
+ def Slytherin!; end
31
+ end
48
32
 
49
- sig { returns(T::Boolean) }
50
- def Slytherin?(); end
33
+ module Wizard::ActiveRelation_WhereNot
34
+ sig { params(opts: T.untyped, rest: T.untyped).returns(T.self_type) }
35
+ def not(opts, *rest); end
36
+ end
37
+
38
+ module Wizard::GeneratedAttributeMethods
39
+ extend T::Sig
51
40
 
52
41
  sig { returns(DateTime) }
53
- def created_at(); end
42
+ def created_at; end
54
43
 
55
44
  sig { params(value: DateTime).void }
56
45
  def created_at=(value); end
57
46
 
58
- sig { params(args: T.untyped).returns(T::Boolean) }
59
- def created_at?(*args); end
47
+ sig { returns(T::Boolean) }
48
+ def created_at?; end
60
49
 
61
- sig { returns(String) }
62
- def house(); end
50
+ sig { returns(T.nilable(String)) }
51
+ def house; end
63
52
 
64
53
  sig { params(value: T.nilable(T.any(Integer, String, Symbol))).void }
65
54
  def house=(value); end
66
55
 
67
- sig { params(args: T.untyped).returns(T::Boolean) }
68
- def house?(*args); end
56
+ sig { returns(T::Boolean) }
57
+ def house?; end
69
58
 
70
59
  sig { returns(Integer) }
71
- def id(); end
60
+ def id; end
72
61
 
73
62
  sig { params(value: Integer).void }
74
63
  def id=(value); end
75
64
 
76
- sig { params(args: T.untyped).returns(T::Boolean) }
77
- def id?(*args); end
65
+ sig { returns(T::Boolean) }
66
+ def id?; end
78
67
 
79
68
  sig { returns(T.nilable(String)) }
80
- def name(); end
69
+ def name; end
81
70
 
82
71
  sig { params(value: T.nilable(String)).void }
83
72
  def name=(value); end
84
73
 
85
- sig { params(args: T.untyped).returns(T::Boolean) }
86
- def name?(*args); end
74
+ sig { returns(T::Boolean) }
75
+ def name?; end
87
76
 
88
77
  sig { returns(T.nilable(String)) }
89
- def notes(); end
78
+ def notes; end
90
79
 
91
80
  sig { params(value: T.nilable(String)).void }
92
81
  def notes=(value); end
93
82
 
94
- sig { params(args: T.untyped).returns(T::Boolean) }
95
- def notes?(*args); end
83
+ sig { returns(T::Boolean) }
84
+ def notes?; end
96
85
 
97
86
  sig { returns(T.nilable(String)) }
98
- def parent_email(); end
87
+ def parent_email; end
99
88
 
100
89
  sig { params(value: T.nilable(String)).void }
101
90
  def parent_email=(value); end
102
91
 
103
- sig { params(args: T.untyped).returns(T::Boolean) }
104
- def parent_email?(*args); end
92
+ sig { returns(T::Boolean) }
93
+ def parent_email?; end
105
94
 
106
95
  sig { returns(DateTime) }
107
- def updated_at(); end
96
+ def updated_at; end
108
97
 
109
98
  sig { params(value: DateTime).void }
110
99
  def updated_at=(value); end
111
100
 
112
- sig { params(args: T.untyped).returns(T::Boolean) }
113
- def updated_at?(*args); end
114
-
101
+ sig { returns(T::Boolean) }
102
+ def updated_at?; end
115
103
  end
116
104
 
117
- class Wizard
105
+ module Wizard::GeneratedAssociationMethods
118
106
  extend T::Sig
119
107
 
120
108
  sig { returns(ActiveRecord::Associations::CollectionProxy) }
121
- def spell_books(); end
109
+ def spell_books; end
122
110
 
123
111
  sig { params(value: T.any(T::Array[T.untyped], ActiveRecord::Associations::CollectionProxy)).void }
124
112
  def spell_books=(value); end
125
113
 
126
114
  sig { returns(T.nilable(::Wand)) }
127
- def wand(); end
115
+ def wand; end
128
116
 
129
117
  sig { params(value: T.nilable(::Wand)).void }
130
118
  def wand=(value); end
119
+ end
131
120
 
132
- sig { params(args: T.untyped).returns(Wizard::ActiveRecord_Relation) }
133
- def self.Gryffindor(*args); end
134
-
135
- sig { params(args: T.untyped).returns(Wizard::ActiveRecord_Relation) }
136
- def self.Hufflepuff(*args); end
121
+ module Wizard::CustomFinderMethods
122
+ sig { params(limit: Integer).returns(T::Array[Wizard]) }
123
+ def first_n(limit); end
137
124
 
138
- sig { params(args: T.untyped).returns(Wizard::ActiveRecord_Relation) }
139
- def self.Ravenclaw(*args); end
125
+ sig { params(limit: Integer).returns(T::Array[Wizard]) }
126
+ def last_n(limit); end
140
127
 
141
- sig { params(args: T.untyped).returns(Wizard::ActiveRecord_Relation) }
142
- def self.Slytherin(*args); end
128
+ sig { params(args: T::Array[T.any(Integer, String)]).returns(T::Array[Wizard]) }
129
+ def find_n(*args); end
143
130
 
144
- sig { returns(T::Hash[T.any(String, Symbol), Integer]) }
145
- def self.houses(); end
131
+ sig { params(id: Integer).returns(T.nilable(Wizard)) }
132
+ def find_by_id(id); end
146
133
 
134
+ sig { params(id: Integer).returns(Wizard) }
135
+ def find_by_id!(id); end
147
136
  end
148
137
 
149
- module Wizard::ModelRelationShared
138
+ class Wizard < ApplicationRecord
139
+ include Wizard::EnumInstanceMethods
140
+ include Wizard::GeneratedAttributeMethods
141
+ include Wizard::GeneratedAssociationMethods
142
+ extend SorbetRails::CustomFinderMethods
143
+ extend Wizard::CustomFinderMethods
150
144
  extend T::Sig
145
+ extend T::Generic
146
+ extend Wizard::ModelRelationShared
147
+
148
+ sig { returns(T::Hash[T.any(String, Symbol), Integer]) }
149
+ def self.houses; end
151
150
 
152
151
  sig { returns(Wizard::ActiveRecord_Relation) }
153
- def all(); end
152
+ def self.Gryffindor; end
154
153
 
155
- sig { params(block: T.nilable(T.proc.void)).returns(Wizard::ActiveRecord_Relation) }
156
- def unscoped(&block); end
154
+ sig { returns(Wizard::ActiveRecord_Relation) }
155
+ def self.Hufflepuff; end
156
+
157
+ sig { returns(Wizard::ActiveRecord_Relation) }
158
+ def self.Ravenclaw; end
159
+
160
+ sig { returns(Wizard::ActiveRecord_Relation) }
161
+ def self.Slytherin; end
162
+
163
+ sig { params(args: T.untyped).returns(Wizard) }
164
+ def self.find(*args); end
165
+
166
+ sig { params(args: T.untyped).returns(T.nilable(Wizard)) }
167
+ def self.find_by(*args); end
168
+
169
+ sig { params(args: T.untyped).returns(Wizard) }
170
+ def self.find_by!(*args); end
171
+
172
+ sig { returns(T.nilable(Wizard)) }
173
+ def self.first; end
174
+
175
+ sig { returns(Wizard) }
176
+ def self.first!; end
177
+
178
+ sig { returns(T.nilable(Wizard)) }
179
+ def self.second; end
180
+
181
+ sig { returns(Wizard) }
182
+ def self.second!; end
183
+
184
+ sig { returns(T.nilable(Wizard)) }
185
+ def self.third; end
186
+
187
+ sig { returns(Wizard) }
188
+ def self.third!; end
189
+
190
+ sig { returns(T.nilable(Wizard)) }
191
+ def self.third_to_last; end
192
+
193
+ sig { returns(Wizard) }
194
+ def self.third_to_last!; end
195
+
196
+ sig { returns(T.nilable(Wizard)) }
197
+ def self.second_to_last; end
198
+
199
+ sig { returns(Wizard) }
200
+ def self.second_to_last!; end
201
+
202
+ sig { returns(T.nilable(Wizard)) }
203
+ def self.last; end
204
+
205
+ sig { returns(Wizard) }
206
+ def self.last!; end
207
+
208
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
209
+ def self.exists?(conditions = nil); end
210
+
211
+ sig { params(args: T.untyped).returns(T::Boolean) }
212
+ def self.any?(*args); end
213
+
214
+ sig { params(args: T.untyped).returns(T::Boolean) }
215
+ def self.many?(*args); end
216
+
217
+ sig { params(args: T.untyped).returns(T::Boolean) }
218
+ def self.none?(*args); end
219
+
220
+ sig { params(args: T.untyped).returns(T::Boolean) }
221
+ def self.one?(*args); end
222
+ end
223
+
224
+ module Wizard::ModelRelationShared
225
+ extend T::Sig
157
226
 
158
227
  sig { params(args: T.untyped).returns(Wizard::ActiveRecord_Relation) }
159
228
  def Gryffindor(*args); end
@@ -182,6 +251,12 @@ module Wizard::ModelRelationShared
182
251
  sig { params(args: T.untyped).returns(Wizard::ActiveRecord_Relation) }
183
252
  def recent(*args); end
184
253
 
254
+ sig { returns(Wizard::ActiveRecord_Relation) }
255
+ def all; end
256
+
257
+ sig { params(block: T.nilable(T.proc.void)).returns(Wizard::ActiveRecord_Relation) }
258
+ def unscoped(&block); end
259
+
185
260
  sig { params(args: T.untyped, block: T.nilable(T.proc.void)).returns(Wizard::ActiveRecord_Relation) }
186
261
  def select(*args, &block); end
187
262
 
@@ -274,5 +349,176 @@ module Wizard::ModelRelationShared
274
349
 
275
350
  sig { params(args: T.untyped, block: T.nilable(T.proc.void)).returns(Wizard::ActiveRecord_Relation) }
276
351
  def only(*args, &block); end
352
+ end
353
+
354
+ class Wizard::ActiveRecord_Relation < ActiveRecord::Relation
355
+ include Wizard::ActiveRelation_WhereNot
356
+ include SorbetRails::CustomFinderMethods
357
+ include Wizard::CustomFinderMethods
358
+ include Enumerable
359
+ include Wizard::ModelRelationShared
360
+ extend T::Sig
361
+ extend T::Generic
362
+ Elem = type_member(fixed: Wizard)
363
+
364
+ sig { params(args: T.untyped).returns(Wizard) }
365
+ def find(*args); end
366
+
367
+ sig { params(args: T.untyped).returns(T.nilable(Wizard)) }
368
+ def find_by(*args); end
369
+
370
+ sig { params(args: T.untyped).returns(Wizard) }
371
+ def find_by!(*args); end
372
+
373
+ sig { returns(T.nilable(Wizard)) }
374
+ def first; end
375
+
376
+ sig { returns(Wizard) }
377
+ def first!; end
378
+
379
+ sig { returns(T.nilable(Wizard)) }
380
+ def second; end
381
+
382
+ sig { returns(Wizard) }
383
+ def second!; end
384
+
385
+ sig { returns(T.nilable(Wizard)) }
386
+ def third; end
387
+
388
+ sig { returns(Wizard) }
389
+ def third!; end
390
+
391
+ sig { returns(T.nilable(Wizard)) }
392
+ def third_to_last; end
393
+
394
+ sig { returns(Wizard) }
395
+ def third_to_last!; end
396
+
397
+ sig { returns(T.nilable(Wizard)) }
398
+ def second_to_last; end
399
+
400
+ sig { returns(Wizard) }
401
+ def second_to_last!; end
402
+
403
+ sig { returns(T.nilable(Wizard)) }
404
+ def last; end
405
+
406
+ sig { returns(Wizard) }
407
+ def last!; end
408
+
409
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
410
+ def exists?(conditions = nil); end
411
+
412
+ sig { params(args: T.untyped).returns(T::Boolean) }
413
+ def any?(*args); end
414
+
415
+ sig { params(args: T.untyped).returns(T::Boolean) }
416
+ def many?(*args); end
417
+
418
+ sig { params(args: T.untyped).returns(T::Boolean) }
419
+ def none?(*args); end
420
+
421
+ sig { params(args: T.untyped).returns(T::Boolean) }
422
+ def one?(*args); end
423
+
424
+ sig { implementation.params(block: T.proc.params(e: Wizard).void).void }
425
+ def each(&block); end
426
+
427
+ sig { params(level: T.nilable(Integer)).returns(T::Array[Wizard]) }
428
+ def flatten(level); end
429
+
430
+ sig { returns(T::Array[Wizard]) }
431
+ def to_a; end
432
+ end
433
+
434
+ class Wizard::ActiveRecord_Associations_CollectionProxy < ActiveRecord::Associations::CollectionProxy
435
+ include Wizard::ActiveRelation_WhereNot
436
+ include SorbetRails::CustomFinderMethods
437
+ include Wizard::CustomFinderMethods
438
+ include Enumerable
439
+ include Wizard::ModelRelationShared
440
+ extend T::Sig
441
+ extend T::Generic
442
+ Elem = type_member(fixed: Wizard)
443
+
444
+ sig { params(args: T.untyped).returns(Wizard) }
445
+ def find(*args); end
446
+
447
+ sig { params(args: T.untyped).returns(T.nilable(Wizard)) }
448
+ def find_by(*args); end
449
+
450
+ sig { params(args: T.untyped).returns(Wizard) }
451
+ def find_by!(*args); end
452
+
453
+ sig { returns(T.nilable(Wizard)) }
454
+ def first; end
455
+
456
+ sig { returns(Wizard) }
457
+ def first!; end
458
+
459
+ sig { returns(T.nilable(Wizard)) }
460
+ def second; end
461
+
462
+ sig { returns(Wizard) }
463
+ def second!; end
464
+
465
+ sig { returns(T.nilable(Wizard)) }
466
+ def third; end
467
+
468
+ sig { returns(Wizard) }
469
+ def third!; end
470
+
471
+ sig { returns(T.nilable(Wizard)) }
472
+ def third_to_last; end
473
+
474
+ sig { returns(Wizard) }
475
+ def third_to_last!; end
476
+
477
+ sig { returns(T.nilable(Wizard)) }
478
+ def second_to_last; end
479
+
480
+ sig { returns(Wizard) }
481
+ def second_to_last!; end
482
+
483
+ sig { returns(T.nilable(Wizard)) }
484
+ def last; end
485
+
486
+ sig { returns(Wizard) }
487
+ def last!; end
488
+
489
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
490
+ def exists?(conditions = nil); end
491
+
492
+ sig { params(args: T.untyped).returns(T::Boolean) }
493
+ def any?(*args); end
494
+
495
+ sig { params(args: T.untyped).returns(T::Boolean) }
496
+ def many?(*args); end
497
+
498
+ sig { params(args: T.untyped).returns(T::Boolean) }
499
+ def none?(*args); end
500
+
501
+ sig { params(args: T.untyped).returns(T::Boolean) }
502
+ def one?(*args); end
503
+
504
+ sig { implementation.params(block: T.proc.params(e: Wizard).void).void }
505
+ def each(&block); end
506
+
507
+ sig { params(level: T.nilable(Integer)).returns(T::Array[Wizard]) }
508
+ def flatten(level); end
509
+
510
+ sig { returns(T::Array[Wizard]) }
511
+ def to_a; end
512
+
513
+ sig { params(records: T.any(Wizard, T::Array[Wizard])).returns(T.self_type) }
514
+ def <<(*records); end
515
+
516
+ sig { params(records: T.any(Wizard, T::Array[Wizard])).returns(T.self_type) }
517
+ def append(*records); end
518
+
519
+ sig { params(records: T.any(Wizard, T::Array[Wizard])).returns(T.self_type) }
520
+ def push(*records); end
277
521
 
522
+ sig { params(records: T.any(Wizard, T::Array[Wizard])).returns(T.self_type) }
523
+ def concat(*records); end
278
524
  end