sorbet-rails 0.7.3 → 0.7.33

Sign up to get free protection for your applications and to get access to all the features.
Files changed (376) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +7 -0
  3. data/.github/workflows/ci-master.yml +30 -0
  4. data/.github/workflows/ci.yml +26 -0
  5. data/.github/workflows/publish-gem.yml +17 -0
  6. data/CONTRIBUTING.md +1 -2
  7. data/Gemfile +5 -9
  8. data/README.md +44 -6
  9. data/Rakefile +13 -24
  10. data/lib/sorbet-rails/active_record_rbi_formatter.rb +18 -15
  11. data/lib/sorbet-rails/dependent_gem_rbis/activerecord.rbi +4 -0
  12. data/lib/sorbet-rails/dependent_gem_rbis/parlour.rbi +1896 -0
  13. data/lib/sorbet-rails/gem_plugins/aasm_plugin.rb +55 -0
  14. data/lib/sorbet-rails/gem_plugins/attr_json_plugin.rb +137 -0
  15. data/lib/sorbet-rails/gem_plugins/flag_shih_tzu_plugin.rb +201 -0
  16. data/lib/sorbet-rails/gem_plugins/kaminari_plugin.rb +20 -0
  17. data/lib/sorbet-rails/gem_plugins/money_rails_plugin.rb +76 -0
  18. data/lib/sorbet-rails/gem_plugins/shrine_plugin.rb +1 -1
  19. data/lib/sorbet-rails/job_rbi_formatter.rb +1 -1
  20. data/lib/sorbet-rails/model_column_utils.rb +1 -1
  21. data/lib/sorbet-rails/model_plugins/active_record_assoc.rb +1 -1
  22. data/lib/sorbet-rails/model_plugins/active_record_querying.rb +38 -1
  23. data/lib/sorbet-rails/model_plugins/active_record_serialized_attribute.rb +3 -2
  24. data/lib/sorbet-rails/model_plugins/base.rb +8 -1
  25. data/lib/sorbet-rails/model_plugins/custom_finder_methods.rb +1 -1
  26. data/lib/sorbet-rails/model_plugins/plugins.rb +12 -0
  27. data/lib/sorbet-rails/model_rbi_formatter.rb +7 -4
  28. data/lib/sorbet-rails/model_utils.rb +14 -7
  29. data/lib/sorbet-rails/rails_mixins/custom_finder_methods.rb +12 -0
  30. data/lib/sorbet-rails/railtie.rb +1 -1
  31. data/lib/sorbet-rails/routes_rbi_formatter.rb +8 -0
  32. data/lib/sorbet-rails/tasks/rails_rbi.rake +12 -8
  33. data/sorbet-rails.gemspec +3 -3
  34. data/spec/bin/run_all_specs.sh +3 -4
  35. data/spec/bin/run_spec.sh +4 -1
  36. data/spec/custom_finder_methods_spec.rb +23 -0
  37. data/spec/generators/rails-template.rb +3 -20
  38. data/spec/generators/sorbet_test_cases.rb +26 -4
  39. data/spec/rails_helper.rb +6 -10
  40. data/spec/rake_rails_rbi_models_spec.rb +11 -4
  41. data/spec/sorbet_spec.rb +5 -1
  42. data/spec/support/v5.2/Gemfile +1 -3
  43. data/spec/support/v5.2/Gemfile.lock +88 -81
  44. data/spec/support/v5.2/app/controllers/application_controller.rb +1 -1
  45. data/spec/support/v5.2/app/mailers/application_mailer.rb +1 -1
  46. data/spec/support/v5.2/app/mailers/daily_prophet_mailer.rb +1 -1
  47. data/spec/support/v5.2/app/mailers/hogwarts_acceptance_mailer.rb +1 -1
  48. data/spec/support/v5.2/app/models/spell_book.rb +1 -1
  49. data/spec/support/v5.2/app/models/wand.rb +1 -1
  50. data/spec/support/v5.2/app/models/wizard.rb +1 -1
  51. data/spec/support/v5.2/config/environments/development.rb +1 -1
  52. data/spec/support/v5.2/config/environments/production.rb +1 -1
  53. data/spec/support/v5.2/config/environments/test.rb +1 -1
  54. data/spec/support/v5.2/config/initializers/wrap_parameters.rb +1 -1
  55. data/spec/support/v5.2/config/routes.rb +1 -1
  56. data/spec/support/v5.2/sorbet_test_cases.rb +26 -4
  57. data/spec/support/v6.0/Gemfile +1 -1
  58. data/spec/support/v6.0/Gemfile.lock +103 -96
  59. data/spec/support/v6.0/app/mailers/application_mailer.rb +1 -1
  60. data/spec/support/v6.0/config/environments/development.rb +1 -1
  61. data/spec/support/v6.0/config/environments/test.rb +1 -1
  62. data/spec/support/v6.0/config/initializers/cookies_serializer.rb +1 -1
  63. data/spec/support/v6.0/config/initializers/sorbet_rails.rb +1 -1
  64. data/spec/support/v6.0/config/routes.rb +1 -1
  65. data/spec/support/v6.0/sorbet_test_cases.rb +26 -4
  66. data/spec/support/{v5.1 → v6.1}/.gitignore +13 -2
  67. data/spec/support/{v5.1 → v6.1}/Gemfile +12 -15
  68. data/spec/support/v6.1/Gemfile.lock +203 -0
  69. data/spec/support/{v5.0 → v6.1}/README.md +0 -0
  70. data/spec/support/{v5.0 → v6.1}/Rakefile +0 -0
  71. data/spec/support/{v5.0 → v6.1}/app/assets/config/manifest.js +0 -0
  72. data/spec/support/{v5.0 → v6.1}/app/assets/images/.keep +0 -0
  73. data/spec/support/{v5.1 → v6.1}/app/assets/stylesheets/application.css +0 -0
  74. data/spec/support/{v5.0 → v6.1}/app/controllers/application_controller.rb +1 -2
  75. data/spec/support/{v5.0 → v6.1}/app/controllers/concerns/.keep +0 -0
  76. data/spec/support/{v5.0 → v6.1}/app/helpers/application_helper.rb +0 -0
  77. data/spec/support/{v5.0 → v6.1}/app/helpers/bar_helper.rb +0 -0
  78. data/spec/support/{v5.0 → v6.1}/app/helpers/baz_helper.rb +0 -0
  79. data/spec/support/{v5.0 → v6.1}/app/helpers/foo_helper.rb +0 -0
  80. data/spec/support/v6.1/app/jobs/application_job.rb +8 -0
  81. data/spec/support/{v5.0 → v6.1}/app/jobs/award_house_point_hourglasses.rb +0 -0
  82. data/spec/support/{v5.1 → v6.1}/app/mailers/application_mailer.rb +1 -1
  83. data/spec/support/{v5.0 → v6.1}/app/mailers/daily_prophet_mailer.rb +0 -0
  84. data/spec/support/{v5.0 → v6.1}/app/mailers/hogwarts_acceptance_mailer.rb +0 -0
  85. data/spec/support/{v5.0 → v6.1}/app/models/application_record.rb +0 -0
  86. data/spec/support/{v5.0 → v6.1}/app/models/concerns/.keep +0 -0
  87. data/spec/support/{v5.0 → v6.1}/app/models/concerns/mythical.rb +0 -0
  88. data/spec/support/{v5.1 → v6.1}/app/models/headmaster.rb +1 -1
  89. data/spec/support/{v5.1 → v6.1}/app/models/potion.rb +0 -0
  90. data/spec/support/{v5.1 → v6.1}/app/models/robe.rb +0 -0
  91. data/spec/support/{v5.0 → v6.1}/app/models/school.rb +1 -1
  92. data/spec/support/{v5.1 → v6.1}/app/models/spell.rb +0 -0
  93. data/spec/support/{v5.0 → v6.1}/app/models/spell_book.rb +0 -0
  94. data/spec/support/{v5.0 → v6.1}/app/models/squib.rb +0 -0
  95. data/spec/support/{v5.1 → v6.1}/app/models/subject.rb +0 -0
  96. data/spec/support/{v5.0 → v6.1}/app/models/wand.rb +0 -0
  97. data/spec/support/{v5.0 → v6.1}/app/models/wizard.rb +2 -1
  98. data/spec/support/{v5.1 → v6.1}/app/views/layouts/application.html.erb +2 -1
  99. data/spec/support/{v5.0 → v6.1}/app/views/layouts/mailer.html.erb +0 -0
  100. data/spec/support/{v5.0 → v6.1}/app/views/layouts/mailer.text.erb +0 -0
  101. data/spec/support/v6.1/bin/bundle +114 -0
  102. data/spec/support/{v5.0 → v6.1}/bin/rails +0 -0
  103. data/spec/support/{v5.0 → v6.1}/bin/rake +0 -0
  104. data/spec/support/{v5.1 → v6.1}/bin/setup +6 -11
  105. data/spec/support/{v5.1 → v6.1}/config/application.rb +8 -4
  106. data/spec/support/{v5.0 → v6.1}/config/boot.rb +0 -0
  107. data/spec/support/{v5.1 → v6.1}/config/database.yml +1 -1
  108. data/spec/support/{v5.0 → v6.1}/config/environment.rb +0 -0
  109. data/spec/support/{v5.1 → v6.1}/config/environments/development.rb +12 -4
  110. data/spec/support/{v5.1 → v6.1}/config/environments/production.rb +29 -7
  111. data/spec/support/{v5.1 → v6.1}/config/environments/test.rb +13 -7
  112. data/spec/support/{v5.0 → v6.1}/config/initializers/application_controller_renderer.rb +0 -0
  113. data/spec/support/{v5.0 → v6.1}/config/initializers/backtrace_silencers.rb +0 -0
  114. data/spec/support/v6.1/config/initializers/content_security_policy.rb +29 -0
  115. data/spec/support/{v5.1 → v6.1}/config/initializers/cookies_serializer.rb +1 -1
  116. data/spec/support/{v5.0 → v6.1}/config/initializers/filter_parameter_logging.rb +0 -0
  117. data/spec/support/{v5.0 → v6.1}/config/initializers/inflections.rb +0 -0
  118. data/spec/support/{v5.0 → v6.1}/config/initializers/mime_types.rb +0 -0
  119. data/spec/support/{v5.0 → v6.1}/config/initializers/sorbet_rails.rb +1 -1
  120. data/spec/support/{v5.0 → v6.1}/config/initializers/wrap_parameters.rb +1 -1
  121. data/spec/support/{v5.1 → v6.1}/config/locales/en.yml +1 -1
  122. data/spec/support/{v5.1 → v6.1}/config/puma.rb +8 -26
  123. data/spec/support/v6.1/config/routes.rb +5 -0
  124. data/spec/support/v6.1/config/storage.yml +34 -0
  125. data/spec/support/{v5.0 → v6.1}/config.ru +0 -0
  126. data/spec/support/{v5.1 → v6.1}/db/migrate/20190620000001_create_wizards.rb +2 -2
  127. data/spec/support/{v5.1 → v6.1}/db/migrate/20190620000002_create_wands.rb +2 -2
  128. data/spec/support/{v5.1 → v6.1}/db/migrate/20190620000003_create_spell_books.rb +2 -2
  129. data/spec/support/{v5.1 → v6.1}/db/migrate/20190620000004_add_more_column_types_to_wands.rb +2 -2
  130. data/spec/support/v6.1/db/migrate/20190620000005_add_broom_to_wizard.rb +6 -0
  131. data/spec/support/{v5.1 → v6.1}/db/migrate/20190620000006_add_more_enums_to_wizard.rb +2 -2
  132. data/spec/support/{v5.1 → v6.1}/db/migrate/20190620000007_add_type_to_wizard.rb +2 -2
  133. data/spec/support/{v5.1 → v6.1}/db/migrate/20190620000008_add_robe_to_wizard.rb +2 -2
  134. data/spec/support/{v5.1 → v6.1}/db/migrate/20190620000009_add_school.rb +2 -2
  135. data/spec/support/{v5.1 → v6.1}/db/migrate/20190620000010_add_subject.rb +2 -2
  136. data/spec/support/{v5.1 → v6.1}/db/migrate/20190620000011_add_subjects_wizards.rb +2 -2
  137. data/spec/support/{v5.1 → v6.1}/db/migrate/20190620000012_add_spell.rb +2 -2
  138. data/spec/support/{v5.1 → v6.1}/db/migrate/20190620000013_add_spells_spell_books.rb +2 -2
  139. data/spec/support/{v5.0 → v6.1}/db/migrate/20190620000014_create_headmasters.rb +2 -2
  140. data/spec/support/{v5.0 → v6.1}/db/migrate/20190620000015_add_serialized_to_wizards.rb +2 -2
  141. data/spec/support/{v5.1 → v6.1}/db/schema.rb +14 -11
  142. data/spec/support/{v5.0 → v6.1}/db/seeds.rb +0 -0
  143. data/spec/support/{v5.0 → v6.1}/lib/assets/.keep +0 -0
  144. data/spec/support/{v5.0 → v6.1}/lib/mythical_rbi_plugin.rb +0 -0
  145. data/spec/support/{v5.0 → v6.1}/lib/tasks/.keep +0 -0
  146. data/spec/support/{v5.0 → v6.1}/log/.keep +0 -0
  147. data/spec/support/{v5.0 → v6.1}/sorbet_test_cases.rb +29 -4
  148. data/spec/support/{v5.0/tmp → v6.1/storage}/.keep +0 -0
  149. data/spec/support/{v5.0/vendor/assets/stylesheets → v6.1/tmp}/.keep +0 -0
  150. data/spec/support/{v5.1/app/assets/images → v6.1/tmp/pids}/.keep +0 -0
  151. data/spec/support/{v5.1/app/controllers/concerns → v6.1/vendor}/.keep +0 -0
  152. data/spec/test_data/v5.2/expected_active_record_base.rbi +10 -10
  153. data/spec/test_data/v5.2/expected_active_record_relation.rbi +12 -13
  154. data/spec/test_data/v5.2/expected_attachment.rbi +16 -10
  155. data/spec/test_data/v5.2/expected_blob.rbi +16 -10
  156. data/spec/test_data/v5.2/expected_habtm_subjects.rbi +3 -3
  157. data/spec/test_data/v5.2/expected_habtm_wizards.rbi +3 -3
  158. data/spec/test_data/v5.2/expected_headmaster.rbi +16 -10
  159. data/spec/test_data/v5.2/expected_internal_metadata.rbi +16 -10
  160. data/spec/test_data/v5.2/expected_potion.rbi +16 -10
  161. data/spec/test_data/v5.2/expected_robe.rbi +16 -10
  162. data/spec/test_data/v5.2/expected_routes.rbi +8 -0
  163. data/spec/test_data/v5.2/expected_schema_migration.rbi +16 -10
  164. data/spec/test_data/v5.2/expected_school.rbi +16 -10
  165. data/spec/test_data/v5.2/expected_spell/habtm_spell_books.rbi +16 -10
  166. data/spec/test_data/v5.2/expected_spell.rbi +16 -10
  167. data/spec/test_data/v5.2/expected_spell_book/habtm_spell_books.rbi +3 -3
  168. data/spec/test_data/v5.2/expected_spell_book/habtm_spells.rbi +16 -10
  169. data/spec/test_data/v5.2/expected_spell_book.rbi +16 -10
  170. data/spec/test_data/v5.2/expected_squib.rbi +18 -12
  171. data/spec/test_data/v5.2/expected_subject/habtm_wizards.rbi +16 -10
  172. data/spec/test_data/v5.2/expected_subject.rbi +16 -10
  173. data/spec/test_data/v5.2/expected_wand.rbi +16 -10
  174. data/spec/test_data/v5.2/expected_wizard/habtm_subjects.rbi +16 -10
  175. data/spec/test_data/v5.2/expected_wizard.rbi +18 -12
  176. data/spec/test_data/v5.2/expected_wizard_wo_spellbook.rbi +21 -15
  177. data/spec/test_data/v6.0/expected_active_record_base.rbi +10 -10
  178. data/spec/test_data/v6.0/expected_active_record_relation.rbi +12 -13
  179. data/spec/test_data/v6.0/expected_attachment.rbi +16 -10
  180. data/spec/test_data/v6.0/expected_blob.rbi +16 -10
  181. data/spec/test_data/v6.0/expected_habtm_subjects.rbi +3 -3
  182. data/spec/test_data/v6.0/expected_habtm_wizards.rbi +3 -3
  183. data/spec/test_data/v6.0/expected_headmaster.rbi +16 -10
  184. data/spec/test_data/v6.0/expected_internal_metadata.rbi +16 -10
  185. data/spec/test_data/v6.0/expected_potion.rbi +16 -10
  186. data/spec/test_data/v6.0/expected_robe.rbi +16 -10
  187. data/spec/test_data/v6.0/expected_routes.rbi +8 -0
  188. data/spec/test_data/v6.0/expected_schema_migration.rbi +16 -10
  189. data/spec/test_data/v6.0/expected_school.rbi +16 -10
  190. data/spec/test_data/v6.0/expected_spell/habtm_spell_books.rbi +16 -10
  191. data/spec/test_data/v6.0/expected_spell.rbi +16 -10
  192. data/spec/test_data/v6.0/expected_spell_book/habtm_spell_books.rbi +3 -3
  193. data/spec/test_data/v6.0/expected_spell_book/habtm_spells.rbi +16 -10
  194. data/spec/test_data/v6.0/expected_spell_book.rbi +16 -10
  195. data/spec/test_data/v6.0/expected_squib.rbi +18 -12
  196. data/spec/test_data/v6.0/expected_subject/habtm_wizards.rbi +16 -10
  197. data/spec/test_data/v6.0/expected_subject.rbi +16 -10
  198. data/spec/test_data/v6.0/expected_wand.rbi +16 -10
  199. data/spec/test_data/v6.0/expected_wizard/habtm_subjects.rbi +16 -10
  200. data/spec/test_data/v6.0/expected_wizard.rbi +18 -12
  201. data/spec/test_data/v6.0/expected_wizard_wo_spellbook.rbi +21 -15
  202. data/spec/test_data/{v5.1 → v6.1}/expected_active_record_base.rbi +16 -16
  203. data/spec/test_data/{v5.1 → v6.1}/expected_active_record_relation.rbi +28 -32
  204. data/spec/test_data/{v5.0 → v6.1}/expected_application_job.rbi +0 -0
  205. data/spec/test_data/{v5.0 → v6.1}/expected_application_mailer.rbi +0 -0
  206. data/spec/test_data/v6.1/expected_attachment.rbi +340 -0
  207. data/spec/test_data/{v5.0 → v6.1}/expected_award_house_point_hourglasses.rbi +0 -0
  208. data/spec/test_data/v6.1/expected_blob.rbi +388 -0
  209. data/spec/test_data/{v5.0 → v6.1}/expected_custom_application_job.rbi +0 -0
  210. data/spec/test_data/{v5.0 → v6.1}/expected_custom_application_mailer.rbi +0 -0
  211. data/spec/test_data/{v5.0 → v6.1}/expected_custom_award_house_point_hourglasses.rbi +0 -0
  212. data/spec/test_data/{v5.0 → v6.1}/expected_custom_daily_prophet_mailer.rbi +0 -0
  213. data/spec/test_data/{v5.0 → v6.1}/expected_custom_hogwarts_acceptance_mailer.rbi +0 -0
  214. data/spec/test_data/{v5.0 → v6.1}/expected_daily_prophet_mailer.rbi +0 -0
  215. data/spec/test_data/{v5.1 → v6.1}/expected_habtm_subjects.rbi +51 -3
  216. data/spec/test_data/{v5.1 → v6.1}/expected_habtm_wizards.rbi +51 -3
  217. data/spec/test_data/{v5.1 → v6.1}/expected_headmaster.rbi +42 -6
  218. data/spec/test_data/{v5.0 → v6.1}/expected_helpers.rbi +0 -0
  219. data/spec/test_data/{v5.0 → v6.1}/expected_helpers_with_application_and_devise_helpers.rbi +0 -0
  220. data/spec/test_data/{v5.0 → v6.1}/expected_hogwarts_acceptance_mailer.rbi +0 -0
  221. data/spec/test_data/{v5.1 → v6.1}/expected_internal_metadata.rbi +42 -6
  222. data/spec/test_data/{v5.0 → v6.1}/expected_no_routes.rbi +0 -0
  223. data/spec/test_data/{v5.1 → v6.1}/expected_potion.rbi +42 -6
  224. data/spec/test_data/v6.1/expected_record.rbi +301 -0
  225. data/spec/test_data/{v5.1 → v6.1}/expected_robe.rbi +42 -6
  226. data/spec/test_data/v6.1/expected_routes.rbi +175 -0
  227. data/spec/test_data/{v5.1 → v6.1}/expected_schema_migration.rbi +42 -6
  228. data/spec/test_data/{v5.1 → v6.1}/expected_school.rbi +42 -6
  229. data/spec/test_data/{v5.1 → v6.1}/expected_spell/habtm_spell_books.rbi +42 -6
  230. data/spec/test_data/{v5.1 → v6.1}/expected_spell.rbi +42 -6
  231. data/spec/test_data/{v5.1 → v6.1}/expected_spell_book/habtm_spell_books.rbi +51 -3
  232. data/spec/test_data/{v5.1 → v6.1}/expected_spell_book/habtm_spells.rbi +42 -6
  233. data/spec/test_data/{v5.1 → v6.1}/expected_spell_book.rbi +78 -6
  234. data/spec/test_data/{v5.1 → v6.1}/expected_squib.rbi +514 -64
  235. data/spec/test_data/{v5.0 → v6.1}/expected_srb_tc_output.txt +0 -0
  236. data/spec/test_data/{v5.1 → v6.1}/expected_subject/habtm_wizards.rbi +42 -6
  237. data/spec/test_data/{v5.1 → v6.1}/expected_subject.rbi +42 -6
  238. data/spec/test_data/v6.1/expected_variant_record.rbi +376 -0
  239. data/spec/test_data/{v5.1 → v6.1}/expected_wand.rbi +108 -6
  240. data/spec/test_data/{v5.1 → v6.1}/expected_wizard/habtm_subjects.rbi +42 -6
  241. data/spec/test_data/{v5.1 → v6.1}/expected_wizard.rbi +514 -64
  242. data/spec/test_data/{v5.1 → v6.1}/expected_wizard_wo_spellbook.rbi +508 -58
  243. metadata +271 -503
  244. data/.travis.yml +0 -42
  245. data/lib/sorbet-rails/type_assert/actionpack.rbi +0 -4
  246. data/spec/support/v5.0/.gitignore +0 -21
  247. data/spec/support/v5.0/Gemfile +0 -37
  248. data/spec/support/v5.0/Gemfile.lock +0 -158
  249. data/spec/support/v5.0/app/assets/stylesheets/application.css +0 -15
  250. data/spec/support/v5.0/app/jobs/application_job.rb +0 -3
  251. data/spec/support/v5.0/app/mailers/application_mailer.rb +0 -5
  252. data/spec/support/v5.0/app/models/headmaster.rb +0 -8
  253. data/spec/support/v5.0/app/models/potion.rb +0 -6
  254. data/spec/support/v5.0/app/models/robe.rb +0 -4
  255. data/spec/support/v5.0/app/models/spell.rb +0 -5
  256. data/spec/support/v5.0/app/models/subject.rb +0 -5
  257. data/spec/support/v5.0/app/views/layouts/application.html.erb +0 -13
  258. data/spec/support/v5.0/bin/bundle +0 -3
  259. data/spec/support/v5.0/bin/setup +0 -34
  260. data/spec/support/v5.0/bin/update +0 -29
  261. data/spec/support/v5.0/config/application.rb +0 -27
  262. data/spec/support/v5.0/config/database.yml +0 -25
  263. data/spec/support/v5.0/config/environments/development.rb +0 -48
  264. data/spec/support/v5.0/config/environments/production.rb +0 -75
  265. data/spec/support/v5.0/config/environments/test.rb +0 -43
  266. data/spec/support/v5.0/config/initializers/cookies_serializer.rb +0 -6
  267. data/spec/support/v5.0/config/initializers/new_framework_defaults.rb +0 -27
  268. data/spec/support/v5.0/config/initializers/session_store.rb +0 -4
  269. data/spec/support/v5.0/config/locales/en.yml +0 -23
  270. data/spec/support/v5.0/config/puma.rb +0 -48
  271. data/spec/support/v5.0/config/routes.rb +0 -5
  272. data/spec/support/v5.0/db/migrate/20190620000001_create_wizards.rb +0 -14
  273. data/spec/support/v5.0/db/migrate/20190620000002_create_wands.rb +0 -12
  274. data/spec/support/v5.0/db/migrate/20190620000003_create_spell_books.rb +0 -10
  275. data/spec/support/v5.0/db/migrate/20190620000004_add_more_column_types_to_wands.rb +0 -17
  276. data/spec/support/v5.0/db/migrate/20190620000005_add_broom_to_wizard.rb +0 -6
  277. data/spec/support/v5.0/db/migrate/20190620000006_add_more_enums_to_wizard.rb +0 -9
  278. data/spec/support/v5.0/db/migrate/20190620000007_add_type_to_wizard.rb +0 -6
  279. data/spec/support/v5.0/db/migrate/20190620000008_add_robe_to_wizard.rb +0 -8
  280. data/spec/support/v5.0/db/migrate/20190620000009_add_school.rb +0 -10
  281. data/spec/support/v5.0/db/migrate/20190620000010_add_subject.rb +0 -8
  282. data/spec/support/v5.0/db/migrate/20190620000011_add_subjects_wizards.rb +0 -8
  283. data/spec/support/v5.0/db/migrate/20190620000012_add_spell.rb +0 -8
  284. data/spec/support/v5.0/db/migrate/20190620000013_add_spells_spell_books.rb +0 -8
  285. data/spec/support/v5.0/db/schema.rb +0 -96
  286. data/spec/support/v5.0/public/robots.txt +0 -5
  287. data/spec/support/v5.1/Gemfile.lock +0 -165
  288. data/spec/support/v5.1/README.md +0 -24
  289. data/spec/support/v5.1/Rakefile +0 -6
  290. data/spec/support/v5.1/app/assets/config/manifest.js +0 -2
  291. data/spec/support/v5.1/app/controllers/application_controller.rb +0 -4
  292. data/spec/support/v5.1/app/helpers/application_helper.rb +0 -3
  293. data/spec/support/v5.1/app/helpers/bar_helper.rb +0 -3
  294. data/spec/support/v5.1/app/helpers/baz_helper.rb +0 -3
  295. data/spec/support/v5.1/app/helpers/foo_helper.rb +0 -3
  296. data/spec/support/v5.1/app/jobs/application_job.rb +0 -3
  297. data/spec/support/v5.1/app/jobs/award_house_point_hourglasses.rb +0 -12
  298. data/spec/support/v5.1/app/mailers/daily_prophet_mailer.rb +0 -9
  299. data/spec/support/v5.1/app/mailers/hogwarts_acceptance_mailer.rb +0 -29
  300. data/spec/support/v5.1/app/models/application_record.rb +0 -4
  301. data/spec/support/v5.1/app/models/concerns/.keep +0 -0
  302. data/spec/support/v5.1/app/models/concerns/mythical.rb +0 -11
  303. data/spec/support/v5.1/app/models/school.rb +0 -5
  304. data/spec/support/v5.1/app/models/spell_book.rb +0 -18
  305. data/spec/support/v5.1/app/models/squib.rb +0 -6
  306. data/spec/support/v5.1/app/models/wand.rb +0 -19
  307. data/spec/support/v5.1/app/models/wizard.rb +0 -65
  308. data/spec/support/v5.1/app/views/layouts/mailer.html.erb +0 -13
  309. data/spec/support/v5.1/app/views/layouts/mailer.text.erb +0 -1
  310. data/spec/support/v5.1/bin/bundle +0 -3
  311. data/spec/support/v5.1/bin/rails +0 -4
  312. data/spec/support/v5.1/bin/rake +0 -4
  313. data/spec/support/v5.1/bin/update +0 -29
  314. data/spec/support/v5.1/bin/yarn +0 -11
  315. data/spec/support/v5.1/config/boot.rb +0 -4
  316. data/spec/support/v5.1/config/environment.rb +0 -6
  317. data/spec/support/v5.1/config/initializers/application_controller_renderer.rb +0 -9
  318. data/spec/support/v5.1/config/initializers/backtrace_silencers.rb +0 -8
  319. data/spec/support/v5.1/config/initializers/filter_parameter_logging.rb +0 -5
  320. data/spec/support/v5.1/config/initializers/inflections.rb +0 -17
  321. data/spec/support/v5.1/config/initializers/mime_types.rb +0 -5
  322. data/spec/support/v5.1/config/initializers/sorbet_rails.rb +0 -3
  323. data/spec/support/v5.1/config/initializers/wrap_parameters.rb +0 -15
  324. data/spec/support/v5.1/config/routes.rb +0 -5
  325. data/spec/support/v5.1/config.ru +0 -5
  326. data/spec/support/v5.1/db/migrate/20190620000005_add_broom_to_wizard.rb +0 -6
  327. data/spec/support/v5.1/db/migrate/20190620000014_create_headmasters.rb +0 -9
  328. data/spec/support/v5.1/db/migrate/20190620000015_add_serialized_to_wizards.rb +0 -9
  329. data/spec/support/v5.1/db/seeds.rb +0 -8
  330. data/spec/support/v5.1/lib/assets/.keep +0 -0
  331. data/spec/support/v5.1/lib/mythical_rbi_plugin.rb +0 -16
  332. data/spec/support/v5.1/lib/tasks/.keep +0 -0
  333. data/spec/support/v5.1/log/.keep +0 -0
  334. data/spec/support/v5.1/package.json +0 -5
  335. data/spec/support/v5.1/public/robots.txt +0 -1
  336. data/spec/support/v5.1/sorbet_test_cases.rb +0 -409
  337. data/spec/support/v5.1/tmp/.keep +0 -0
  338. data/spec/support/v5.1/vendor/.keep +0 -0
  339. data/spec/test_data/v5.0/expected_active_record_base.rbi +0 -113
  340. data/spec/test_data/v5.0/expected_active_record_relation.rbi +0 -199
  341. data/spec/test_data/v5.0/expected_habtm_subjects.rbi +0 -660
  342. data/spec/test_data/v5.0/expected_habtm_wizards.rbi +0 -660
  343. data/spec/test_data/v5.0/expected_headmaster.rbi +0 -328
  344. data/spec/test_data/v5.0/expected_internal_metadata.rbi +0 -298
  345. data/spec/test_data/v5.0/expected_potion.rbi +0 -280
  346. data/spec/test_data/v5.0/expected_robe.rbi +0 -301
  347. data/spec/test_data/v5.0/expected_routes.rbi +0 -27
  348. data/spec/test_data/v5.0/expected_schema_migration.rbi +0 -271
  349. data/spec/test_data/v5.0/expected_school.rbi +0 -301
  350. data/spec/test_data/v5.0/expected_spell/habtm_spell_books.rbi +0 -319
  351. data/spec/test_data/v5.0/expected_spell.rbi +0 -292
  352. data/spec/test_data/v5.0/expected_spell_book/habtm_spell_books.rbi +0 -637
  353. data/spec/test_data/v5.0/expected_spell_book/habtm_spells.rbi +0 -319
  354. data/spec/test_data/v5.0/expected_spell_book.rbi +0 -415
  355. data/spec/test_data/v5.0/expected_squib.rbi +0 -832
  356. data/spec/test_data/v5.0/expected_subject/habtm_wizards.rbi +0 -319
  357. data/spec/test_data/v5.0/expected_subject.rbi +0 -292
  358. data/spec/test_data/v5.0/expected_wand.rbi +0 -497
  359. data/spec/test_data/v5.0/expected_wizard/habtm_subjects.rbi +0 -319
  360. data/spec/test_data/v5.0/expected_wizard.rbi +0 -908
  361. data/spec/test_data/v5.0/expected_wizard_wo_spellbook.rbi +0 -902
  362. data/spec/test_data/v5.1/expected_application_job.rbi +0 -20
  363. data/spec/test_data/v5.1/expected_application_mailer.rbi +0 -5
  364. data/spec/test_data/v5.1/expected_award_house_point_hourglasses.rbi +0 -20
  365. data/spec/test_data/v5.1/expected_custom_application_job.rbi +0 -21
  366. data/spec/test_data/v5.1/expected_custom_application_mailer.rbi +0 -6
  367. data/spec/test_data/v5.1/expected_custom_award_house_point_hourglasses.rbi +0 -21
  368. data/spec/test_data/v5.1/expected_custom_daily_prophet_mailer.rbi +0 -8
  369. data/spec/test_data/v5.1/expected_custom_hogwarts_acceptance_mailer.rbi +0 -21
  370. data/spec/test_data/v5.1/expected_daily_prophet_mailer.rbi +0 -7
  371. data/spec/test_data/v5.1/expected_helpers.rbi +0 -27
  372. data/spec/test_data/v5.1/expected_helpers_with_application_and_devise_helpers.rbi +0 -34
  373. data/spec/test_data/v5.1/expected_hogwarts_acceptance_mailer.rbi +0 -20
  374. data/spec/test_data/v5.1/expected_no_routes.rbi +0 -4
  375. data/spec/test_data/v5.1/expected_routes.rbi +0 -27
  376. data/spec/test_data/v5.1/expected_srb_tc_output.txt +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 04e15a0b91862375e9b3f853928e0f46a3c44e6176cb10ecb813a337ac50a45a
4
- data.tar.gz: e6a5b10b3ac40664e0dce8a51c80795d8fd2e0c7ef4cc665c6ad169d6cd3f0dc
3
+ metadata.gz: c85a4b2dec82b9ff5e78fd20ca40964639474ae84d03641f4d7a2f2ee7afe1ae
4
+ data.tar.gz: 62fd90904255f58f2c494a51c170077e347b0746b426717829514aa38df79b48
5
5
  SHA512:
6
- metadata.gz: 3b3bddd29abcb7d6496ece148526fc204c9a7e2bd51f54a264d526e3c10bcacafe6118a49e9ad9c36f6edb9927fe80cd31de28ce4ddda035811f5d15520e2599
7
- data.tar.gz: '05249019b6251b14ab95a71599c666710478c8468702546c0619ff9111021447d246ea47bc9f62bb038e04616e6b306647b4c669315ff59672b93a1682e6eb39'
6
+ metadata.gz: 1d57f6492a27063b71f6f02d5731a6b4b05f97395f6ec61cfccf0af782544bd1bd0c9c8205338535dc4563c2be15f51745d03a52d51cd02e53d937c99fbba0b3
7
+ data.tar.gz: 8141acaf0b835f523b75f255a647e615017015aab6e40e2d50bd3ff5a523b74589583964553e1fbe6d959f3234722434757cb7aa9a68cc68381a1a5761b5a493
@@ -0,0 +1,7 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "bundler"
4
+ # Files stored in repository root
5
+ directory: "/"
6
+ schedule:
7
+ interval: "daily"
@@ -0,0 +1,30 @@
1
+ name: ci-master
2
+
3
+ on:
4
+ push:
5
+ branches: # Trigger only on the main branch to avoid duplicate runs on PR branches
6
+ - master
7
+ schedule: # trigger once a week to ensure that CI works even after dependent gem updates
8
+ - cron: 0 0 * * 1
9
+
10
+ jobs:
11
+ rspec:
12
+ runs-on: ubuntu-latest
13
+
14
+ strategy:
15
+ fail-fast: false
16
+ matrix:
17
+ ruby: [2.5, 2.6, 2.7]
18
+ rails: [5.2, 6.0, 6.1]
19
+
20
+ env:
21
+ RAILS_VERSION: ${{ matrix.rails }}
22
+ CI: true
23
+
24
+ steps:
25
+ - uses: actions/checkout@v2
26
+ - uses: ruby/setup-ruby@v1
27
+ with:
28
+ ruby-version: ${{ matrix.ruby }}
29
+ # bundler-cache: true -- this messes up some dynamic constants
30
+ - run: "./spec/bin/run_spec.sh"
@@ -0,0 +1,26 @@
1
+ name: ci
2
+
3
+ on:
4
+ pull_request: # Trigger All PRs
5
+
6
+ jobs:
7
+ rspec:
8
+ runs-on: ubuntu-latest
9
+
10
+ strategy:
11
+ fail-fast: false
12
+ matrix:
13
+ ruby: [2.5, 2.6, 2.7]
14
+ rails: [5.2, 6.0, 6.1]
15
+
16
+ env:
17
+ RAILS_VERSION: ${{ matrix.rails }}
18
+
19
+ steps:
20
+ - uses: actions/checkout@v2
21
+ - uses: ruby/setup-ruby@v1
22
+ with:
23
+ ruby-version: ${{ matrix.ruby }}
24
+ # bundler-cache: true -- this messes up some dynamic constants
25
+ - run: "./spec/bin/run_spec.sh"
26
+ - run: bundle exec srb tc
@@ -0,0 +1,17 @@
1
+ name: publish-gem
2
+
3
+ on:
4
+ workflow_dispatch:
5
+
6
+ jobs:
7
+ build:
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - uses: actions/checkout@v2
11
+ - uses: ruby/setup-ruby@v1
12
+ with:
13
+ ruby-version: 2.7
14
+ - name: Release Gem
15
+ uses: dawidd6/action-publish-gem@v1
16
+ with:
17
+ api_key: ${{secrets.RUBYGEMS_API_KEY}}
data/CONTRIBUTING.md CHANGED
@@ -87,10 +87,9 @@ To run the tests against all supported Rails branches, use:
87
87
  You can also switch to a version of Rails with `RAILS_VERSION`:
88
88
 
89
89
  ```sh
90
- ❯ RAILS_VERSION=5.0 ./spec/bin/run_spec.sh
91
- ❯ RAILS_VERSION=5.1 ./spec/bin/run_spec.sh
92
90
  ❯ RAILS_VERSION=5.2 ./spec/bin/run_spec.sh
93
91
  ❯ RAILS_VERSION=6.0 ./spec/bin/run_spec.sh
92
+ ❯ RAILS_VERSION=6.1 ./spec/bin/run_spec.sh
94
93
  ```
95
94
 
96
95
  #### Debugging
data/Gemfile CHANGED
@@ -13,14 +13,6 @@ case rails_version
13
13
  when "master"
14
14
  gem "rails", {github: "rails/rails"}
15
15
  gem "bundler", ">= 1.3.0"
16
- when "5.0"
17
- gem "rails", "~> 5.0.7"
18
- gem "bundler", ">= 2.0"
19
- gem "sqlite3", "~> 1.3.6"
20
- when "5.1"
21
- gem "rails", "~> 5.1.7"
22
- gem "bundler", ">= 2.0"
23
- gem "sqlite3", "~> 1.4.1"
24
16
  when "5.2"
25
17
  gem "rails", "~> 5.2.3"
26
18
  gem "bundler", ">= 2.0"
@@ -29,8 +21,12 @@ when "6.0"
29
21
  gem "rails", "~> 6.0.0"
30
22
  gem "bundler", ">= 2.0"
31
23
  gem "sqlite3", "~> 1.4.1"
24
+ when "6.1"
25
+ gem "rails", "~> 6.1.0"
26
+ gem "bundler", ">= 2.0"
27
+ gem "sqlite3", "~> 1.4.1"
32
28
  else
33
- gem "rails", "~> 5.2.3"
29
+ gem "rails", "~> 6.0.0"
34
30
  gem "bundler", ">= 2.0"
35
31
  gem "sqlite3", "~> 1.4.1"
36
32
  end
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # sorbet-rails
2
2
  [![Gem Version](https://badge.fury.io/rb/sorbet-rails.svg)](https://badge.fury.io/rb/sorbet-rails)
3
- [![Build Status](https://travis-ci.com/chanzuckerberg/sorbet-rails.svg?branch=master)](https://travis-ci.com/chanzuckerberg/sorbet-rails)
3
+ [![Build Status](https://github.com/chanzuckerberg/sorbet-rails/actions/workflows/ci-master.yml/badge.svg)](https://github.com/chanzuckerberg/sorbet-rails)
4
4
  [![codecov](https://codecov.io/gh/chanzuckerberg/sorbet-rails/branch/master/graph/badge.svg)](https://codecov.io/gh/chanzuckerberg/sorbet-rails)
5
5
 
6
6
  A set of tools to make the [Sorbet](https://sorbet.org) typechecker work with Ruby on Rails seamlessly.
@@ -43,8 +43,8 @@ Add `sorbet-rails` to the [`:default` group](https://bundler.io/v2.0/guides/grou
43
43
 
44
44
  4. Update hidden-definition files and automatically upgrade each file's typecheck level:
45
45
  ```sh
46
- ❯ srb rbi hidden-definitions
47
- ❯ srb rbi suggest-typed
46
+ bundle exec srb rbi hidden-definitions
47
+ bundle exec srb rbi suggest-typed
48
48
  ```
49
49
  Because we've generated RBI files for routes, models, and helpers, a lot more files should be typecheckable now. Many methods in `hidden.rbi` may be removed because they are now typed.
50
50
 
@@ -206,7 +206,7 @@ end
206
206
  ❯ bundle exec rake rails_rbi:custom
207
207
  ```
208
208
 
209
- `sorbet-rails` adds `TypedParams` to extact typed controller parameters.
209
+ `sorbet-rails` adds `TypedParams` to extract typed controller parameters.
210
210
 
211
211
  TypedParams takes a parameter definition, which is a subclass of `T::Struct` and coerces the `params` object into an instance of that subclass using [sorbet-coerce](https://github.com/chanzuckerberg/sorbet-coerce):
212
212
  ```ruby
@@ -285,6 +285,7 @@ specific environment group (eg. `development` only).
285
285
 
286
286
  - Model: The gem provides some helper method to a model to make type-checking easier:
287
287
  - `find_n`, `first_n`, `last_n`
288
+ - `where_missing`
288
289
  - `pluck_to_tstruct`
289
290
  - `typed_enum`
290
291
 
@@ -311,7 +312,7 @@ It is worth going through the list of files that is ignored and resolve them (an
311
312
 
312
313
  ### Overriding generated signatures if needed
313
314
 
314
- `sorbet-rails` relies on Rails reflection to generate signatures. There are features this gem doesn't support yet such as [serialize](https://github.com/chanzuckerberg/sorbet-rails/issues/49) and [attribute custom types](https://github.com/chanzuckerberg/sorbet-rails/issues/16). The gem also doesn't know the signature of any methods you have overridden. However, it is possible to override the signatures that `sorbet-rails` generates.
315
+ `sorbet-rails` relies on Rails reflection to generate signatures. There are features this gem doesn't support yet such as [attribute custom types](https://github.com/chanzuckerberg/sorbet-rails/issues/16). The gem also doesn't know the signature of any methods you have overridden. However, it is possible to override the signatures that `sorbet-rails` generates.
315
316
 
316
317
  For example, here is how to override the signature for a method in a model:
317
318
 
@@ -363,6 +364,7 @@ Following are the list of attribute dynamic methods and their static counterpart
363
364
  - `<attribute>_was` -> `attribute_was(<attribute>)`
364
365
  - `saved_change_to_<attribute>?` -> `saved_change_to_attribute?(<attribute>)`
365
366
  - `<attribute>_before_type_cast` -> `read_attribute_before_type_cast(<attribute>)`
367
+ - `will_save_change_to_<attribute>?` -> `will_save_change_to_attribute?(<attribute>)`
366
368
 
367
369
  ### `after_commit` and other callbacks
368
370
 
@@ -409,8 +411,16 @@ Model.unscoped.scoping do … end
409
411
 
410
412
  ### `select` with a block
411
413
 
412
- The [`select` method](https://apidock.com/rails/v4.0.2/ActiveRecord/QueryMethods/select) in Rails has two modes: it can be given a list of symbols, in which case rails will only return the given columns from the database, or it can be given a block, in which case it acts like [`Enumerable.select`](https://ruby-doc.org/core-2.6.4/Enumerable.html) and returns an array. We have chosen to support the first use case. If you want to pass a block to `select`, you can simply call `to_a` before you do. Note that this would be done within the `select` call anyway, so the performance penalty will be minimal.
414
+ The [`select` method](https://apidock.com/rails/v4.0.2/ActiveRecord/QueryMethods/select) in Rails has two modes: it can be given a list of symbols, in which case rails will only return the given columns from the database, or it can be given a block, in which case it acts like [`Enumerable.select`](https://ruby-doc.org/core-2.6.4/Enumerable.html) and returns an array.
413
415
 
416
+ We have chosen to support `select` with a block as the primary use case, since it is a more prevalent use of this method. We provide `select_columns` as an alternative if you want to select a list of columns.
417
+
418
+ ```
419
+ Model.select { |record| record.id > 1} # valid, returns an array
420
+ Model.select_columns(:id, :name) # valid, returns an association
421
+
422
+ Model.select(:id, :name) # sorbet error, use `select_column` instead
423
+ ```
414
424
  ### `flatten` an array of relation
415
425
 
416
426
  When you call `flatten` on an array of ActiveRecord::Relation, sorbet [doesn't recognize](https://github.com/sorbet/sorbet/issues/2767) that it will flatten the relation and return an array of model. The work around is to call `to_a` on the relation first.
@@ -423,6 +433,14 @@ arr = [Model.recent, Model.old].flatten # T::Array[Model::ActiveRecord_Relation]
423
433
  arr = [Model.recent, Model.old].map(&:to_a).flatten # T::Array[Model]
424
434
  ```
425
435
 
436
+ `flat_map` has a similar issue.
437
+
438
+ ```ruby
439
+ foo.bars.flat_map { |b| b.scope } # T::Array[T.untyped]
440
+
441
+ foo.bars.flat_map { |b| b.scope.to_a } # T::Array[Scope]
442
+ ```
443
+
426
444
  ### Avoid `and_call_original` in rspecs
427
445
 
428
446
  If you run into the following issue when running rspec, it's likely because you're using `expect(:method_name).and_call_original` to mock a method in RSpec. We've found the double mock doesn't interact well with Sorbet's sig wrapper and caused flaky spec. The spec should be rewritten to expect the outcome of the method instead. (It still works with `expect(:method_name)` and `expect(:method_name).and_return(...)`
@@ -436,6 +454,18 @@ If you run into the following issue when running rspec, it's likely because you'
436
454
  if you're really stuck.
437
455
  ```
438
456
 
457
+ ### `where.missing` does not exist on `ActiveRecord::Relation` ###
458
+
459
+ The [`where` method](https://apidock.com/rails/ActiveRecord/QueryMethods/where) in Rails has two modes: it can be passed no arguments where it will return an `ActiveRecord::QueryMethods::WhereChain` object, or when given arguments, returns an `ActiveRecord::Relation` object. By default we've opted to support `where` with arguments and have provided a `where_missing` method to avoid conflicts during static typing.
460
+
461
+ ```
462
+ Wizard.where.missing(:wand) # sorbet error, use `where_missing` instead
463
+
464
+ Wizard.where_missing(:wand) # valid, returns a relation
465
+ ```
466
+
467
+ **Note:** `where.missing` / `where_missing` are only available in Rails 6.1 or above
468
+
439
469
  ## Extending RBI Generation logic
440
470
 
441
471
  ### Extending Model Generation Task with Custom Plugins
@@ -522,6 +552,10 @@ These are the currently-supported gems and their symbolized names:
522
552
  | [Shrine] | `:shrine` |
523
553
  | [active_flag]| `:active_flag` |
524
554
  | [Paperclip] | `:paperclip` |
555
+ | [AttrJson] | `:attr_json` |
556
+ | [FlagShihTzu] | `:flag_shih_tzu` |
557
+ | [AASM] | `:aasm` |
558
+ | [Money-Rails] | `:money_rails` |
525
559
 
526
560
  You can also configure the core model plugins if needed. The default plugins are defined in the [config](https://github.com/chanzuckerberg/sorbet-rails/blob/master/lib/sorbet-rails/config.rb). For the full list of plugin symbols, check out [here](https://github.com/chanzuckerberg/sorbet-rails/blob/master/lib/sorbet-rails/model_plugins/plugins.rb).
527
561
 
@@ -533,6 +567,10 @@ You can also configure the core model plugins if needed. The default plugins are
533
567
  [Shrine]: https://github.com/shrinerb/shrine
534
568
  [active_flag]: https://github.com/kenn/active_flag
535
569
  [Paperclip]: https://github.com/thoughtbot/paperclip
570
+ [AttrJson]: https://github.com/jrochkind/attr_json
571
+ [FlagShihTzu]: https://github.com/pboling/flag_shih_tzu
572
+ [AASM]: https://github.com/aasm/aasm
573
+ [Money-Rails]: https://github.com/RubyMoney/money-rails
536
574
 
537
575
  ### Customize Generation Class
538
576
 
data/Rakefile CHANGED
@@ -10,13 +10,22 @@ namespace :update_spec do
10
10
 
11
11
  desc "Generate Rails apps for all versions."
12
12
  task :all do |t, args|
13
+ Rake::Task['update_spec:v6_1'].invoke
13
14
  Rake::Task['update_spec:v6_0'].invoke
14
15
  Rake::Task['update_spec:v5_2'].invoke
15
- Rake::Task['update_spec:v5_1'].invoke
16
- Rake::Task['update_spec:v5_0'].invoke
17
16
  end
18
17
 
19
- desc "Delete the Rails 6 spec directory and regenerate it."
18
+ desc "Delete the Rails 6.1 spec directory and regenerate it."
19
+ task :v6_1 do |t, args|
20
+ Bundler.with_clean_env do
21
+ FileUtils.rm_rf 'spec/support/v6.1' if File.directory?('spec/support/v6.1')
22
+ system("gem install rails -v 6.1.4")
23
+ system("rails _6.1.4_ -v")
24
+ system("RAILS_VERSION='6.1' rails _6.1.4_ new --template spec/generators/rails-template.rb spec/support/v6.0 --skip-javascript --skip-action-cable --skip-test --skip-sprockets --skip-spring --skip-bootsnap --skip-listen")
25
+ end
26
+ end
27
+
28
+ desc "Delete the Rails 6.0 spec directory and regenerate it."
20
29
  task :v6_0 do |t, args|
21
30
  Bundler.with_clean_env do
22
31
  FileUtils.rm_rf 'spec/support/v6.0' if File.directory?('spec/support/v6.0')
@@ -36,29 +45,9 @@ namespace :update_spec do
36
45
  end
37
46
  end
38
47
 
39
- desc "Delete the Rails 5.1 spec directory and regenerate it."
40
- task :v5_1 do |t, args|
41
- Bundler.with_clean_env do
42
- FileUtils.rm_rf 'spec/support/v5.1' if File.directory?('spec/support/v5.1')
43
- system("gem install rails -v 5.1.7")
44
- system("rails _5.1.7_ -v")
45
- system("RAILS_VERSION='5.1' rails _5.1.7_ new --template spec/generators/rails-template.rb spec/support/v5.1 --skip-javascript --skip-action-cable --skip-test --skip-sprockets --skip-spring --skip-listen")
46
- end
47
- end
48
-
49
- desc "Delete the Rails 5.0 spec directory and regenerate it."
50
- task :v5_0 do |t, args|
51
- Bundler.with_clean_env do
52
- FileUtils.rm_rf 'spec/support/v5.0' if File.directory?('spec/support/v5.0')
53
- system("gem install rails -v 5.0.7")
54
- system("rails _5.0.7_ -v")
55
- system("RAILS_VERSION='5.0' rails _5.0.7_ new --template spec/generators/rails-template.rb spec/support/v5.0 --skip-javascript --skip-action-cable --skip-test --skip-sprockets --skip-spring --skip-listen")
56
- end
57
- end
58
-
59
48
  desc "Update sorbet_test_cases.rb in all the Rails apps in spec/support."
60
49
  task :sorbet_test_cases do |t, args|
61
- ['v6.0', 'v5.2', 'v5.1', 'v5.0'].each do |version|
50
+ ['v6.1', 'v6.0', 'v5.2'].each do |version|
62
51
  FileUtils.cp("spec/generators/sorbet_test_cases.rb", "spec/support/#{version}/sorbet_test_cases.rb")
63
52
  end
64
53
  end
@@ -38,10 +38,10 @@ class SorbetRails::ActiveRecordRbiFormatter
38
38
 
39
39
  parlour.root.create_class('ActiveRecord::Relation') do |class_rbi|
40
40
  class_rbi.create_include("Enumerable")
41
- class_rbi.create_constant(
42
- "Elem",
43
- value: "type_member(fixed: T.untyped)",
44
- )
41
+ # class_rbi.create_constant(
42
+ # "Elem",
43
+ # value: "type_member {{fixed: T.untyped}}",
44
+ # )
45
45
 
46
46
  create_elem_specific_query_methods(class_rbi, type: 'Elem', class_method: false)
47
47
  create_general_query_methods(class_rbi, class_method: false)
@@ -75,7 +75,7 @@ class SorbetRails::ActiveRecordRbiFormatter
75
75
  parlour.root.create_class("ActiveRecord::AssociationRelation", superclass: "ActiveRecord::Relation") do |class_rbi|
76
76
  class_rbi.create_constant(
77
77
  "Elem",
78
- value: "type_member(fixed: T.untyped)",
78
+ value: "type_member {{fixed: T.untyped}}",
79
79
  )
80
80
 
81
81
  # Ideally we shouldn't need to define these since this class inherits from
@@ -110,7 +110,7 @@ class SorbetRails::ActiveRecordRbiFormatter
110
110
  parlour.root.create_class("ActiveRecord::Associations::CollectionProxy", superclass: "ActiveRecord::Relation") do |class_rbi|
111
111
  class_rbi.create_constant(
112
112
  "Elem",
113
- value: "type_member(fixed: T.untyped)",
113
+ value: "type_member {{fixed: T.untyped}}",
114
114
  )
115
115
 
116
116
  # This _should_ work which would let us remove it from the enumerable_collections
@@ -273,6 +273,18 @@ class SorbetRails::ActiveRecordRbiFormatter
273
273
  class_method: class_method,
274
274
  )
275
275
  end
276
+
277
+ boolean_methods = %w(any? many? none? one?)
278
+ boolean_methods.each do |boolean_method|
279
+ class_rbi.create_method(
280
+ boolean_method,
281
+ parameters: [
282
+ Parameter.new("&block", type: "T.nilable(T.proc.params(e: #{type}).returns(T.nilable(T::Boolean)))"),
283
+ ],
284
+ return_type: "T::Boolean",
285
+ class_method: class_method,
286
+ )
287
+ end
276
288
  end
277
289
 
278
290
  sig {
@@ -288,14 +300,5 @@ class SorbetRails::ActiveRecordRbiFormatter
288
300
  return_type: "T::Boolean",
289
301
  class_method: class_method,
290
302
  )
291
-
292
- boolean_methods = %w(any? many? none? one?)
293
- boolean_methods.each do |boolean_method|
294
- class_rbi.create_method(
295
- boolean_method,
296
- return_type: "T::Boolean",
297
- class_method: class_method,
298
- )
299
- end
300
303
  end
301
304
  end
@@ -42,3 +42,7 @@ module ActiveModel::Validations
42
42
  def validators_on(*attributes); end
43
43
  end
44
44
  end
45
+
46
+ class ActiveRecord::Type::Serialized
47
+ def coder; end
48
+ end