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
@@ -0,0 +1,17 @@
1
+ # typed: strong
2
+ # This is an autogenerated file for Rails helpers.
3
+ # Please rerun rake rails_rbi:helpers to regenerate.
4
+ module BarHelper
5
+ include Kernel
6
+ include ActionView::Helpers
7
+ end
8
+
9
+ module BazHelper
10
+ include Kernel
11
+ include ActionView::Helpers
12
+ end
13
+
14
+ module FooHelper
15
+ include Kernel
16
+ include ActionView::Helpers
17
+ end
@@ -1,78 +1,74 @@
1
1
  # This is an autogenerated file for dynamic methods in ActiveRecord::InternalMetadata
2
- # Please rerun rake rails_rbi:models to regenerate.
3
- # typed: strong
4
-
5
- class ActiveRecord::InternalMetadata::ActiveRecord_Relation < ActiveRecord::Relation
6
- include ActiveRecord::InternalMetadata::ModelRelationShared
7
- extend T::Generic
8
- Elem = type_member(fixed: ActiveRecord::InternalMetadata)
9
- end
10
-
11
- class ActiveRecord::InternalMetadata::ActiveRecord_Associations_CollectionProxy < ActiveRecord::Associations::CollectionProxy
12
- include ActiveRecord::InternalMetadata::ModelRelationShared
13
- extend T::Generic
14
- Elem = type_member(fixed: ActiveRecord::InternalMetadata)
15
- end
2
+ # Please rerun rake rails_rbi:models[ActiveRecord::InternalMetadata] to regenerate.
16
3
 
17
- class ActiveRecord::InternalMetadata < ActiveRecord::Base
18
- extend T::Sig
19
- extend T::Generic
20
- extend ActiveRecord::InternalMetadata::ModelRelationShared
21
- include ActiveRecord::InternalMetadata::InstanceMethods
22
- Elem = type_template(fixed: ActiveRecord::InternalMetadata)
4
+ # typed: strong
5
+ module ActiveRecord::InternalMetadata::ActiveRelation_WhereNot
6
+ sig { params(opts: T.untyped, rest: T.untyped).returns(T.self_type) }
7
+ def not(opts, *rest); end
23
8
  end
24
9
 
25
- module ActiveRecord::InternalMetadata::InstanceMethods
10
+ module ActiveRecord::InternalMetadata::GeneratedAttributeMethods
26
11
  extend T::Sig
27
12
 
28
13
  sig { returns(DateTime) }
29
- def created_at(); end
14
+ def created_at; end
30
15
 
31
16
  sig { params(value: DateTime).void }
32
17
  def created_at=(value); end
33
18
 
34
- sig { params(args: T.untyped).returns(T::Boolean) }
35
- def created_at?(*args); end
19
+ sig { returns(T::Boolean) }
20
+ def created_at?; end
36
21
 
37
22
  sig { returns(String) }
38
- def key(); end
23
+ def key; end
39
24
 
40
25
  sig { params(value: String).void }
41
26
  def key=(value); end
42
27
 
43
- sig { params(args: T.untyped).returns(T::Boolean) }
44
- def key?(*args); end
28
+ sig { returns(T::Boolean) }
29
+ def key?; end
45
30
 
46
31
  sig { returns(DateTime) }
47
- def updated_at(); end
32
+ def updated_at; end
48
33
 
49
34
  sig { params(value: DateTime).void }
50
35
  def updated_at=(value); end
51
36
 
52
- sig { params(args: T.untyped).returns(T::Boolean) }
53
- def updated_at?(*args); end
37
+ sig { returns(T::Boolean) }
38
+ def updated_at?; end
54
39
 
55
40
  sig { returns(T.nilable(String)) }
56
- def value(); end
41
+ def value; end
57
42
 
58
43
  sig { params(value: T.nilable(String)).void }
59
44
  def value=(value); end
60
45
 
61
- sig { params(args: T.untyped).returns(T::Boolean) }
62
- def value?(*args); end
63
-
46
+ sig { returns(T::Boolean) }
47
+ def value?; end
64
48
  end
65
49
 
66
- class ActiveRecord::InternalMetadata
67
- extend T::Sig
50
+ module ActiveRecord::InternalMetadata::CustomFinderMethods
51
+ sig { params(limit: Integer).returns(T::Array[ActiveRecord::InternalMetadata]) }
52
+ def first_n(limit); end
68
53
 
54
+ sig { params(limit: Integer).returns(T::Array[ActiveRecord::InternalMetadata]) }
55
+ def last_n(limit); end
56
+
57
+ sig { params(args: T::Array[T.any(Integer, String)]).returns(T::Array[ActiveRecord::InternalMetadata]) }
58
+ def find_n(*args); end
59
+
60
+ sig { params(id: Integer).returns(T.nilable(ActiveRecord::InternalMetadata)) }
61
+ def find_by_id(id); end
62
+
63
+ sig { params(id: Integer).returns(ActiveRecord::InternalMetadata) }
64
+ def find_by_id!(id); end
69
65
  end
70
66
 
71
67
  module ActiveRecord::InternalMetadata::ModelRelationShared
72
68
  extend T::Sig
73
69
 
74
70
  sig { returns(ActiveRecord::InternalMetadata::ActiveRecord_Relation) }
75
- def all(); end
71
+ def all; end
76
72
 
77
73
  sig { params(block: T.nilable(T.proc.void)).returns(ActiveRecord::InternalMetadata::ActiveRecord_Relation) }
78
74
  def unscoped(&block); end
@@ -157,5 +153,245 @@ module ActiveRecord::InternalMetadata::ModelRelationShared
157
153
 
158
154
  sig { params(args: T.untyped, block: T.nilable(T.proc.void)).returns(ActiveRecord::InternalMetadata::ActiveRecord_Relation) }
159
155
  def except(*args, &block); end
156
+ end
157
+
158
+ class ActiveRecord::InternalMetadata::ActiveRecord_Relation < ActiveRecord::Relation
159
+ include ActiveRecord::InternalMetadata::ActiveRelation_WhereNot
160
+ include SorbetRails::CustomFinderMethods
161
+ include ActiveRecord::InternalMetadata::CustomFinderMethods
162
+ include Enumerable
163
+ include ActiveRecord::InternalMetadata::ModelRelationShared
164
+ extend T::Sig
165
+ extend T::Generic
166
+ Elem = type_member(fixed: ActiveRecord::InternalMetadata)
167
+
168
+ sig { params(args: T.untyped).returns(ActiveRecord::InternalMetadata) }
169
+ def find(*args); end
170
+
171
+ sig { params(args: T.untyped).returns(T.nilable(ActiveRecord::InternalMetadata)) }
172
+ def find_by(*args); end
173
+
174
+ sig { params(args: T.untyped).returns(ActiveRecord::InternalMetadata) }
175
+ def find_by!(*args); end
176
+
177
+ sig { returns(T.nilable(ActiveRecord::InternalMetadata)) }
178
+ def first; end
179
+
180
+ sig { returns(ActiveRecord::InternalMetadata) }
181
+ def first!; end
182
+
183
+ sig { returns(T.nilable(ActiveRecord::InternalMetadata)) }
184
+ def second; end
185
+
186
+ sig { returns(ActiveRecord::InternalMetadata) }
187
+ def second!; end
188
+
189
+ sig { returns(T.nilable(ActiveRecord::InternalMetadata)) }
190
+ def third; end
191
+
192
+ sig { returns(ActiveRecord::InternalMetadata) }
193
+ def third!; end
194
+
195
+ sig { returns(T.nilable(ActiveRecord::InternalMetadata)) }
196
+ def third_to_last; end
197
+
198
+ sig { returns(ActiveRecord::InternalMetadata) }
199
+ def third_to_last!; end
200
+
201
+ sig { returns(T.nilable(ActiveRecord::InternalMetadata)) }
202
+ def second_to_last; end
203
+
204
+ sig { returns(ActiveRecord::InternalMetadata) }
205
+ def second_to_last!; end
206
+
207
+ sig { returns(T.nilable(ActiveRecord::InternalMetadata)) }
208
+ def last; end
209
+
210
+ sig { returns(ActiveRecord::InternalMetadata) }
211
+ def last!; end
212
+
213
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
214
+ def exists?(conditions = nil); end
215
+
216
+ sig { params(args: T.untyped).returns(T::Boolean) }
217
+ def any?(*args); end
218
+
219
+ sig { params(args: T.untyped).returns(T::Boolean) }
220
+ def many?(*args); end
221
+
222
+ sig { params(args: T.untyped).returns(T::Boolean) }
223
+ def none?(*args); end
224
+
225
+ sig { params(args: T.untyped).returns(T::Boolean) }
226
+ def one?(*args); end
227
+
228
+ sig { implementation.params(block: T.proc.params(e: ActiveRecord::InternalMetadata).void).void }
229
+ def each(&block); end
230
+
231
+ sig { params(level: T.nilable(Integer)).returns(T::Array[ActiveRecord::InternalMetadata]) }
232
+ def flatten(level); end
233
+
234
+ sig { returns(T::Array[ActiveRecord::InternalMetadata]) }
235
+ def to_a; end
236
+ end
237
+
238
+ class ActiveRecord::InternalMetadata::ActiveRecord_Associations_CollectionProxy < ActiveRecord::Associations::CollectionProxy
239
+ include ActiveRecord::InternalMetadata::ActiveRelation_WhereNot
240
+ include SorbetRails::CustomFinderMethods
241
+ include ActiveRecord::InternalMetadata::CustomFinderMethods
242
+ include Enumerable
243
+ include ActiveRecord::InternalMetadata::ModelRelationShared
244
+ extend T::Sig
245
+ extend T::Generic
246
+ Elem = type_member(fixed: ActiveRecord::InternalMetadata)
247
+
248
+ sig { params(args: T.untyped).returns(ActiveRecord::InternalMetadata) }
249
+ def find(*args); end
250
+
251
+ sig { params(args: T.untyped).returns(T.nilable(ActiveRecord::InternalMetadata)) }
252
+ def find_by(*args); end
253
+
254
+ sig { params(args: T.untyped).returns(ActiveRecord::InternalMetadata) }
255
+ def find_by!(*args); end
256
+
257
+ sig { returns(T.nilable(ActiveRecord::InternalMetadata)) }
258
+ def first; end
259
+
260
+ sig { returns(ActiveRecord::InternalMetadata) }
261
+ def first!; end
262
+
263
+ sig { returns(T.nilable(ActiveRecord::InternalMetadata)) }
264
+ def second; end
265
+
266
+ sig { returns(ActiveRecord::InternalMetadata) }
267
+ def second!; end
268
+
269
+ sig { returns(T.nilable(ActiveRecord::InternalMetadata)) }
270
+ def third; end
271
+
272
+ sig { returns(ActiveRecord::InternalMetadata) }
273
+ def third!; end
274
+
275
+ sig { returns(T.nilable(ActiveRecord::InternalMetadata)) }
276
+ def third_to_last; end
277
+
278
+ sig { returns(ActiveRecord::InternalMetadata) }
279
+ def third_to_last!; end
280
+
281
+ sig { returns(T.nilable(ActiveRecord::InternalMetadata)) }
282
+ def second_to_last; end
283
+
284
+ sig { returns(ActiveRecord::InternalMetadata) }
285
+ def second_to_last!; end
286
+
287
+ sig { returns(T.nilable(ActiveRecord::InternalMetadata)) }
288
+ def last; end
289
+
290
+ sig { returns(ActiveRecord::InternalMetadata) }
291
+ def last!; end
292
+
293
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
294
+ def exists?(conditions = nil); end
295
+
296
+ sig { params(args: T.untyped).returns(T::Boolean) }
297
+ def any?(*args); end
298
+
299
+ sig { params(args: T.untyped).returns(T::Boolean) }
300
+ def many?(*args); end
301
+
302
+ sig { params(args: T.untyped).returns(T::Boolean) }
303
+ def none?(*args); end
304
+
305
+ sig { params(args: T.untyped).returns(T::Boolean) }
306
+ def one?(*args); end
307
+
308
+ sig { implementation.params(block: T.proc.params(e: ActiveRecord::InternalMetadata).void).void }
309
+ def each(&block); end
310
+
311
+ sig { params(level: T.nilable(Integer)).returns(T::Array[ActiveRecord::InternalMetadata]) }
312
+ def flatten(level); end
313
+
314
+ sig { returns(T::Array[ActiveRecord::InternalMetadata]) }
315
+ def to_a; end
316
+
317
+ sig { params(records: T.any(ActiveRecord::InternalMetadata, T::Array[ActiveRecord::InternalMetadata])).returns(T.self_type) }
318
+ def <<(*records); end
160
319
 
320
+ sig { params(records: T.any(ActiveRecord::InternalMetadata, T::Array[ActiveRecord::InternalMetadata])).returns(T.self_type) }
321
+ def append(*records); end
322
+
323
+ sig { params(records: T.any(ActiveRecord::InternalMetadata, T::Array[ActiveRecord::InternalMetadata])).returns(T.self_type) }
324
+ def push(*records); end
325
+
326
+ sig { params(records: T.any(ActiveRecord::InternalMetadata, T::Array[ActiveRecord::InternalMetadata])).returns(T.self_type) }
327
+ def concat(*records); end
328
+ end
329
+
330
+ class ActiveRecord::InternalMetadata < ActiveRecord::Base
331
+ include ActiveRecord::InternalMetadata::GeneratedAttributeMethods
332
+ extend SorbetRails::CustomFinderMethods
333
+ extend ActiveRecord::InternalMetadata::CustomFinderMethods
334
+ extend T::Sig
335
+ extend T::Generic
336
+ extend ActiveRecord::InternalMetadata::ModelRelationShared
337
+
338
+ sig { params(args: T.untyped).returns(ActiveRecord::InternalMetadata) }
339
+ def self.find(*args); end
340
+
341
+ sig { params(args: T.untyped).returns(T.nilable(ActiveRecord::InternalMetadata)) }
342
+ def self.find_by(*args); end
343
+
344
+ sig { params(args: T.untyped).returns(ActiveRecord::InternalMetadata) }
345
+ def self.find_by!(*args); end
346
+
347
+ sig { returns(T.nilable(ActiveRecord::InternalMetadata)) }
348
+ def self.first; end
349
+
350
+ sig { returns(ActiveRecord::InternalMetadata) }
351
+ def self.first!; end
352
+
353
+ sig { returns(T.nilable(ActiveRecord::InternalMetadata)) }
354
+ def self.second; end
355
+
356
+ sig { returns(ActiveRecord::InternalMetadata) }
357
+ def self.second!; end
358
+
359
+ sig { returns(T.nilable(ActiveRecord::InternalMetadata)) }
360
+ def self.third; end
361
+
362
+ sig { returns(ActiveRecord::InternalMetadata) }
363
+ def self.third!; end
364
+
365
+ sig { returns(T.nilable(ActiveRecord::InternalMetadata)) }
366
+ def self.third_to_last; end
367
+
368
+ sig { returns(ActiveRecord::InternalMetadata) }
369
+ def self.third_to_last!; end
370
+
371
+ sig { returns(T.nilable(ActiveRecord::InternalMetadata)) }
372
+ def self.second_to_last; end
373
+
374
+ sig { returns(ActiveRecord::InternalMetadata) }
375
+ def self.second_to_last!; end
376
+
377
+ sig { returns(T.nilable(ActiveRecord::InternalMetadata)) }
378
+ def self.last; end
379
+
380
+ sig { returns(ActiveRecord::InternalMetadata) }
381
+ def self.last!; end
382
+
383
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
384
+ def self.exists?(conditions = nil); end
385
+
386
+ sig { params(args: T.untyped).returns(T::Boolean) }
387
+ def self.any?(*args); end
388
+
389
+ sig { params(args: T.untyped).returns(T::Boolean) }
390
+ def self.many?(*args); end
391
+
392
+ sig { params(args: T.untyped).returns(T::Boolean) }
393
+ def self.none?(*args); end
394
+
395
+ sig { params(args: T.untyped).returns(T::Boolean) }
396
+ def self.one?(*args); end
161
397
  end
@@ -1,49 +1,41 @@
1
1
  # This is an autogenerated file for dynamic methods in Potion
2
- # Please rerun rake rails_rbi:models to regenerate.
3
- # typed: strong
2
+ # Please rerun rake rails_rbi:models[Potion] to regenerate.
4
3
 
5
- class Potion::ActiveRecord_Relation < ActiveRecord::Relation
6
- include Potion::ModelRelationShared
7
- extend T::Generic
8
- Elem = type_member(fixed: Potion)
4
+ # typed: strong
5
+ module Potion::ActiveRelation_WhereNot
6
+ sig { params(opts: T.untyped, rest: T.untyped).returns(T.self_type) }
7
+ def not(opts, *rest); end
9
8
  end
10
9
 
11
- class Potion::ActiveRecord_Associations_CollectionProxy < ActiveRecord::Associations::CollectionProxy
12
- include Potion::ModelRelationShared
13
- extend T::Generic
14
- Elem = type_member(fixed: Potion)
15
- end
10
+ module Potion::CustomFinderMethods
11
+ sig { params(limit: Integer).returns(T::Array[Potion]) }
12
+ def first_n(limit); end
16
13
 
17
- class Potion < ApplicationRecord
18
- extend T::Sig
19
- extend T::Generic
20
- extend Potion::ModelRelationShared
21
- include Potion::InstanceMethods
22
- Elem = type_template(fixed: Potion)
23
- end
14
+ sig { params(limit: Integer).returns(T::Array[Potion]) }
15
+ def last_n(limit); end
24
16
 
25
- module Potion::InstanceMethods
26
- extend T::Sig
17
+ sig { params(args: T::Array[T.any(Integer, String)]).returns(T::Array[Potion]) }
18
+ def find_n(*args); end
27
19
 
28
- end
29
-
30
- class Potion
31
- extend T::Sig
20
+ sig { params(id: Integer).returns(T.nilable(Potion)) }
21
+ def find_by_id(id); end
32
22
 
23
+ sig { params(id: Integer).returns(Potion) }
24
+ def find_by_id!(id); end
33
25
  end
34
26
 
35
27
  module Potion::ModelRelationShared
36
28
  extend T::Sig
37
29
 
30
+ sig { params(args: T.untyped).returns(Potion::ActiveRecord_Relation) }
31
+ def recent(*args); end
32
+
38
33
  sig { returns(Potion::ActiveRecord_Relation) }
39
- def all(); end
34
+ def all; end
40
35
 
41
36
  sig { params(block: T.nilable(T.proc.void)).returns(Potion::ActiveRecord_Relation) }
42
37
  def unscoped(&block); end
43
38
 
44
- sig { params(args: T.untyped).returns(Potion::ActiveRecord_Relation) }
45
- def recent(*args); end
46
-
47
39
  sig { params(args: T.untyped, block: T.nilable(T.proc.void)).returns(Potion::ActiveRecord_Relation) }
48
40
  def select(*args, &block); end
49
41
 
@@ -124,5 +116,244 @@ module Potion::ModelRelationShared
124
116
 
125
117
  sig { params(args: T.untyped, block: T.nilable(T.proc.void)).returns(Potion::ActiveRecord_Relation) }
126
118
  def except(*args, &block); end
119
+ end
120
+
121
+ class Potion::ActiveRecord_Relation < ActiveRecord::Relation
122
+ include Potion::ActiveRelation_WhereNot
123
+ include SorbetRails::CustomFinderMethods
124
+ include Potion::CustomFinderMethods
125
+ include Enumerable
126
+ include Potion::ModelRelationShared
127
+ extend T::Sig
128
+ extend T::Generic
129
+ Elem = type_member(fixed: Potion)
130
+
131
+ sig { params(args: T.untyped).returns(Potion) }
132
+ def find(*args); end
133
+
134
+ sig { params(args: T.untyped).returns(T.nilable(Potion)) }
135
+ def find_by(*args); end
136
+
137
+ sig { params(args: T.untyped).returns(Potion) }
138
+ def find_by!(*args); end
139
+
140
+ sig { returns(T.nilable(Potion)) }
141
+ def first; end
142
+
143
+ sig { returns(Potion) }
144
+ def first!; end
145
+
146
+ sig { returns(T.nilable(Potion)) }
147
+ def second; end
148
+
149
+ sig { returns(Potion) }
150
+ def second!; end
151
+
152
+ sig { returns(T.nilable(Potion)) }
153
+ def third; end
154
+
155
+ sig { returns(Potion) }
156
+ def third!; end
157
+
158
+ sig { returns(T.nilable(Potion)) }
159
+ def third_to_last; end
160
+
161
+ sig { returns(Potion) }
162
+ def third_to_last!; end
163
+
164
+ sig { returns(T.nilable(Potion)) }
165
+ def second_to_last; end
166
+
167
+ sig { returns(Potion) }
168
+ def second_to_last!; end
169
+
170
+ sig { returns(T.nilable(Potion)) }
171
+ def last; end
172
+
173
+ sig { returns(Potion) }
174
+ def last!; end
175
+
176
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
177
+ def exists?(conditions = nil); end
178
+
179
+ sig { params(args: T.untyped).returns(T::Boolean) }
180
+ def any?(*args); end
181
+
182
+ sig { params(args: T.untyped).returns(T::Boolean) }
183
+ def many?(*args); end
184
+
185
+ sig { params(args: T.untyped).returns(T::Boolean) }
186
+ def none?(*args); end
187
+
188
+ sig { params(args: T.untyped).returns(T::Boolean) }
189
+ def one?(*args); end
190
+
191
+ sig { implementation.params(block: T.proc.params(e: Potion).void).void }
192
+ def each(&block); end
193
+
194
+ sig { params(level: T.nilable(Integer)).returns(T::Array[Potion]) }
195
+ def flatten(level); end
196
+
197
+ sig { returns(T::Array[Potion]) }
198
+ def to_a; end
199
+ end
200
+
201
+ class Potion::ActiveRecord_Associations_CollectionProxy < ActiveRecord::Associations::CollectionProxy
202
+ include Potion::ActiveRelation_WhereNot
203
+ include SorbetRails::CustomFinderMethods
204
+ include Potion::CustomFinderMethods
205
+ include Enumerable
206
+ include Potion::ModelRelationShared
207
+ extend T::Sig
208
+ extend T::Generic
209
+ Elem = type_member(fixed: Potion)
210
+
211
+ sig { params(args: T.untyped).returns(Potion) }
212
+ def find(*args); end
213
+
214
+ sig { params(args: T.untyped).returns(T.nilable(Potion)) }
215
+ def find_by(*args); end
216
+
217
+ sig { params(args: T.untyped).returns(Potion) }
218
+ def find_by!(*args); end
219
+
220
+ sig { returns(T.nilable(Potion)) }
221
+ def first; end
222
+
223
+ sig { returns(Potion) }
224
+ def first!; end
225
+
226
+ sig { returns(T.nilable(Potion)) }
227
+ def second; end
228
+
229
+ sig { returns(Potion) }
230
+ def second!; end
231
+
232
+ sig { returns(T.nilable(Potion)) }
233
+ def third; end
234
+
235
+ sig { returns(Potion) }
236
+ def third!; end
237
+
238
+ sig { returns(T.nilable(Potion)) }
239
+ def third_to_last; end
240
+
241
+ sig { returns(Potion) }
242
+ def third_to_last!; end
243
+
244
+ sig { returns(T.nilable(Potion)) }
245
+ def second_to_last; end
246
+
247
+ sig { returns(Potion) }
248
+ def second_to_last!; end
249
+
250
+ sig { returns(T.nilable(Potion)) }
251
+ def last; end
252
+
253
+ sig { returns(Potion) }
254
+ def last!; end
255
+
256
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
257
+ def exists?(conditions = nil); end
258
+
259
+ sig { params(args: T.untyped).returns(T::Boolean) }
260
+ def any?(*args); end
261
+
262
+ sig { params(args: T.untyped).returns(T::Boolean) }
263
+ def many?(*args); end
264
+
265
+ sig { params(args: T.untyped).returns(T::Boolean) }
266
+ def none?(*args); end
267
+
268
+ sig { params(args: T.untyped).returns(T::Boolean) }
269
+ def one?(*args); end
270
+
271
+ sig { implementation.params(block: T.proc.params(e: Potion).void).void }
272
+ def each(&block); end
273
+
274
+ sig { params(level: T.nilable(Integer)).returns(T::Array[Potion]) }
275
+ def flatten(level); end
276
+
277
+ sig { returns(T::Array[Potion]) }
278
+ def to_a; end
279
+
280
+ sig { params(records: T.any(Potion, T::Array[Potion])).returns(T.self_type) }
281
+ def <<(*records); end
282
+
283
+ sig { params(records: T.any(Potion, T::Array[Potion])).returns(T.self_type) }
284
+ def append(*records); end
285
+
286
+ sig { params(records: T.any(Potion, T::Array[Potion])).returns(T.self_type) }
287
+ def push(*records); end
288
+
289
+ sig { params(records: T.any(Potion, T::Array[Potion])).returns(T.self_type) }
290
+ def concat(*records); end
291
+ end
292
+
293
+ class Potion < ApplicationRecord
294
+ extend SorbetRails::CustomFinderMethods
295
+ extend Potion::CustomFinderMethods
296
+ extend T::Sig
297
+ extend T::Generic
298
+ extend Potion::ModelRelationShared
299
+
300
+ sig { params(args: T.untyped).returns(Potion) }
301
+ def self.find(*args); end
302
+
303
+ sig { params(args: T.untyped).returns(T.nilable(Potion)) }
304
+ def self.find_by(*args); end
305
+
306
+ sig { params(args: T.untyped).returns(Potion) }
307
+ def self.find_by!(*args); end
308
+
309
+ sig { returns(T.nilable(Potion)) }
310
+ def self.first; end
311
+
312
+ sig { returns(Potion) }
313
+ def self.first!; end
314
+
315
+ sig { returns(T.nilable(Potion)) }
316
+ def self.second; end
317
+
318
+ sig { returns(Potion) }
319
+ def self.second!; end
320
+
321
+ sig { returns(T.nilable(Potion)) }
322
+ def self.third; end
323
+
324
+ sig { returns(Potion) }
325
+ def self.third!; end
326
+
327
+ sig { returns(T.nilable(Potion)) }
328
+ def self.third_to_last; end
329
+
330
+ sig { returns(Potion) }
331
+ def self.third_to_last!; end
332
+
333
+ sig { returns(T.nilable(Potion)) }
334
+ def self.second_to_last; end
335
+
336
+ sig { returns(Potion) }
337
+ def self.second_to_last!; end
338
+
339
+ sig { returns(T.nilable(Potion)) }
340
+ def self.last; end
341
+
342
+ sig { returns(Potion) }
343
+ def self.last!; end
344
+
345
+ sig { params(conditions: T.untyped).returns(T::Boolean) }
346
+ def self.exists?(conditions = nil); end
347
+
348
+ sig { params(args: T.untyped).returns(T::Boolean) }
349
+ def self.any?(*args); end
350
+
351
+ sig { params(args: T.untyped).returns(T::Boolean) }
352
+ def self.many?(*args); end
353
+
354
+ sig { params(args: T.untyped).returns(T::Boolean) }
355
+ def self.none?(*args); end
127
356
 
357
+ sig { params(args: T.untyped).returns(T::Boolean) }
358
+ def self.one?(*args); end
128
359
  end