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
- sig { returns(T.nilable(T.untyped)) }
53
- def created_at(); end
41
+ sig { returns(T.nilable(Time)) }
42
+ def created_at; end
54
43
 
55
- sig { params(value: T.nilable(T.untyped)).void }
44
+ sig { params(value: T.nilable(Time)).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
- sig { returns(T.nilable(T.untyped)) }
107
- def updated_at(); end
95
+ sig { returns(T.nilable(Time)) }
96
+ def updated_at; end
108
97
 
109
- sig { params(value: T.nilable(T.untyped)).void }
98
+ sig { params(value: T.nilable(Time)).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(::SpellBook::ActiveRecord_Associations_CollectionProxy) }
121
- def spell_books(); end
109
+ def spell_books; end
122
110
 
123
111
  sig { params(value: T.any(T::Array[::SpellBook], ::SpellBook::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
@@ -170,6 +239,12 @@ module Wizard::ModelRelationShared
170
239
  sig { params(args: T.untyped).returns(Wizard::ActiveRecord_Relation) }
171
240
  def recent(*args); end
172
241
 
242
+ sig { returns(Wizard::ActiveRecord_Relation) }
243
+ def all; end
244
+
245
+ sig { params(block: T.nilable(T.proc.void)).returns(Wizard::ActiveRecord_Relation) }
246
+ def unscoped(&block); end
247
+
173
248
  sig { params(args: T.untyped, block: T.nilable(T.proc.void)).returns(Wizard::ActiveRecord_Relation) }
174
249
  def select(*args, &block); end
175
250
 
@@ -235,5 +310,176 @@ module Wizard::ModelRelationShared
235
310
 
236
311
  sig { params(args: T.untyped, block: T.nilable(T.proc.void)).returns(Wizard::ActiveRecord_Relation) }
237
312
  def except(*args, &block); end
313
+ end
314
+
315
+ class Wizard::ActiveRecord_Relation < ActiveRecord::Relation
316
+ include Wizard::ActiveRelation_WhereNot
317
+ include SorbetRails::CustomFinderMethods
318
+ include Wizard::CustomFinderMethods
319
+ include Enumerable
320
+ include Wizard::ModelRelationShared
321
+ extend T::Sig
322
+ extend T::Generic
323
+ Elem = type_member(fixed: Wizard)
324
+
325
+ sig { params(args: T.untyped).returns(Wizard) }
326
+ def find(*args); end
327
+
328
+ sig { params(args: T.untyped).returns(T.nilable(Wizard)) }
329
+ def find_by(*args); end
330
+
331
+ sig { params(args: T.untyped).returns(Wizard) }
332
+ def find_by!(*args); end
333
+
334
+ sig { returns(T.nilable(Wizard)) }
335
+ def first; end
336
+
337
+ sig { returns(Wizard) }
338
+ def first!; end
339
+
340
+ sig { returns(T.nilable(Wizard)) }
341
+ def second; end
342
+
343
+ sig { returns(Wizard) }
344
+ def second!; end
345
+
346
+ sig { returns(T.nilable(Wizard)) }
347
+ def third; end
348
+
349
+ sig { returns(Wizard) }
350
+ def third!; end
351
+
352
+ sig { returns(T.nilable(Wizard)) }
353
+ def third_to_last; end
354
+
355
+ sig { returns(Wizard) }
356
+ def third_to_last!; end
357
+
358
+ sig { returns(T.nilable(Wizard)) }
359
+ def second_to_last; end
360
+
361
+ sig { returns(Wizard) }
362
+ def second_to_last!; end
363
+
364
+ sig { returns(T.nilable(Wizard)) }
365
+ def last; end
366
+
367
+ sig { returns(Wizard) }
368
+ def last!; end
369
+
370
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
371
+ def exists?(conditions = nil); end
372
+
373
+ sig { params(args: T.untyped).returns(T::Boolean) }
374
+ def any?(*args); end
375
+
376
+ sig { params(args: T.untyped).returns(T::Boolean) }
377
+ def many?(*args); end
378
+
379
+ sig { params(args: T.untyped).returns(T::Boolean) }
380
+ def none?(*args); end
381
+
382
+ sig { params(args: T.untyped).returns(T::Boolean) }
383
+ def one?(*args); end
384
+
385
+ sig { implementation.params(block: T.proc.params(e: Wizard).void).void }
386
+ def each(&block); end
387
+
388
+ sig { params(level: T.nilable(Integer)).returns(T::Array[Wizard]) }
389
+ def flatten(level); end
390
+
391
+ sig { returns(T::Array[Wizard]) }
392
+ def to_a; end
393
+ end
394
+
395
+ class Wizard::ActiveRecord_Associations_CollectionProxy < ActiveRecord::Associations::CollectionProxy
396
+ include Wizard::ActiveRelation_WhereNot
397
+ include SorbetRails::CustomFinderMethods
398
+ include Wizard::CustomFinderMethods
399
+ include Enumerable
400
+ include Wizard::ModelRelationShared
401
+ extend T::Sig
402
+ extend T::Generic
403
+ Elem = type_member(fixed: Wizard)
404
+
405
+ sig { params(args: T.untyped).returns(Wizard) }
406
+ def find(*args); end
407
+
408
+ sig { params(args: T.untyped).returns(T.nilable(Wizard)) }
409
+ def find_by(*args); end
410
+
411
+ sig { params(args: T.untyped).returns(Wizard) }
412
+ def find_by!(*args); end
413
+
414
+ sig { returns(T.nilable(Wizard)) }
415
+ def first; end
416
+
417
+ sig { returns(Wizard) }
418
+ def first!; end
419
+
420
+ sig { returns(T.nilable(Wizard)) }
421
+ def second; end
422
+
423
+ sig { returns(Wizard) }
424
+ def second!; end
425
+
426
+ sig { returns(T.nilable(Wizard)) }
427
+ def third; end
428
+
429
+ sig { returns(Wizard) }
430
+ def third!; end
431
+
432
+ sig { returns(T.nilable(Wizard)) }
433
+ def third_to_last; end
434
+
435
+ sig { returns(Wizard) }
436
+ def third_to_last!; end
437
+
438
+ sig { returns(T.nilable(Wizard)) }
439
+ def second_to_last; end
440
+
441
+ sig { returns(Wizard) }
442
+ def second_to_last!; end
443
+
444
+ sig { returns(T.nilable(Wizard)) }
445
+ def last; end
446
+
447
+ sig { returns(Wizard) }
448
+ def last!; end
449
+
450
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
451
+ def exists?(conditions = nil); end
452
+
453
+ sig { params(args: T.untyped).returns(T::Boolean) }
454
+ def any?(*args); end
455
+
456
+ sig { params(args: T.untyped).returns(T::Boolean) }
457
+ def many?(*args); end
458
+
459
+ sig { params(args: T.untyped).returns(T::Boolean) }
460
+ def none?(*args); end
461
+
462
+ sig { params(args: T.untyped).returns(T::Boolean) }
463
+ def one?(*args); end
464
+
465
+ sig { implementation.params(block: T.proc.params(e: Wizard).void).void }
466
+ def each(&block); end
467
+
468
+ sig { params(level: T.nilable(Integer)).returns(T::Array[Wizard]) }
469
+ def flatten(level); end
470
+
471
+ sig { returns(T::Array[Wizard]) }
472
+ def to_a; end
473
+
474
+ sig { params(records: T.any(Wizard, T::Array[Wizard])).returns(T.self_type) }
475
+ def <<(*records); end
476
+
477
+ sig { params(records: T.any(Wizard, T::Array[Wizard])).returns(T.self_type) }
478
+ def append(*records); end
479
+
480
+ sig { params(records: T.any(Wizard, T::Array[Wizard])).returns(T.self_type) }
481
+ def push(*records); end
238
482
 
483
+ sig { params(records: T.any(Wizard, T::Array[Wizard])).returns(T.self_type) }
484
+ def concat(*records); end
239
485
  end