sorbet-rails 0.5.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (419) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -10
  3. data/.travis.yml +0 -2
  4. data/Gemfile +2 -2
  5. data/README.md +2 -1
  6. data/Rakefile +4 -15
  7. data/lib/sorbet-rails/gem_plugins/kaminari_plugin.rb +3 -4
  8. data/lib/sorbet-rails/model_plugins/active_record_enum.rb +0 -8
  9. data/lib/sorbet-rails/model_plugins/active_record_finder_methods.rb +3 -0
  10. data/lib/sorbet-rails/model_plugins/active_record_named_scope.rb +4 -3
  11. data/lib/sorbet-rails/model_plugins/active_record_querying.rb +6 -7
  12. data/lib/sorbet-rails/model_plugins/active_relation_where_not.rb +2 -2
  13. data/lib/sorbet-rails/model_plugins/custom_finder_methods.rb +2 -5
  14. data/lib/sorbet-rails/model_plugins/enumerable_collections.rb +15 -0
  15. data/lib/sorbet-rails/model_plugins/plugins.rb +1 -1
  16. data/lib/sorbet-rails/model_rbi_formatter.rb +11 -13
  17. data/lib/sorbet-rails/model_utils.rb +49 -2
  18. data/lib/sorbet-rails/railtie.rb +16 -1
  19. data/lib/sorbet-rails/routes_rbi_formatter.rb +48 -34
  20. data/sorbet-rails.gemspec +1 -1
  21. data/spec/bin/run_all_specs.sh +0 -2
  22. data/spec/bin/run_spec.sh +1 -5
  23. data/spec/generators/rails-template.rb +24 -17
  24. data/spec/generators/sorbet_test_cases.rb +78 -40
  25. data/spec/rails_helper.rb +1 -1
  26. data/spec/sorbet_spec.rb +16 -14
  27. data/spec/support/v4.2/Gemfile.lock +6 -6
  28. data/spec/support/v4.2/app/models/application_record.rb +1 -2
  29. data/spec/support/v4.2/app/models/spell_book.rb +6 -0
  30. data/spec/support/v4.2/app/models/wizard.rb +2 -0
  31. data/spec/support/v4.2/db/migrate/20190620000003_create_spell_books.rb +1 -0
  32. data/spec/support/v4.2/db/schema.rb +1 -0
  33. data/spec/support/v4.2/sorbet_test_cases.rb +78 -40
  34. data/spec/support/v5.0/Gemfile.lock +6 -6
  35. data/spec/support/v5.0/app/models/application_record.rb +1 -2
  36. data/spec/support/v5.0/app/models/spell_book.rb +7 -1
  37. data/spec/support/v5.0/app/models/wizard.rb +2 -0
  38. data/spec/support/v5.0/config/initializers/new_framework_defaults.rb +1 -1
  39. data/spec/support/v5.0/db/migrate/20190620000003_create_spell_books.rb +1 -0
  40. data/spec/support/v5.0/db/schema.rb +1 -0
  41. data/spec/support/v5.0/sorbet_test_cases.rb +78 -40
  42. data/spec/support/v5.1/Gemfile.lock +6 -6
  43. data/spec/support/v5.1/app/models/application_record.rb +1 -2
  44. data/spec/support/v5.1/app/models/spell_book.rb +7 -1
  45. data/spec/support/v5.1/app/models/wizard.rb +2 -0
  46. data/spec/support/v5.1/db/migrate/20190620000003_create_spell_books.rb +1 -0
  47. data/spec/support/v5.1/db/schema.rb +1 -0
  48. data/spec/support/v5.1/sorbet_test_cases.rb +78 -40
  49. data/spec/support/v5.2/Gemfile +1 -1
  50. data/spec/support/v5.2/Gemfile.lock +7 -7
  51. data/spec/support/v5.2/app/models/application_record.rb +1 -2
  52. data/spec/support/v5.2/app/models/spell_book.rb +7 -1
  53. data/spec/support/v5.2/app/models/wizard.rb +2 -0
  54. data/spec/support/v5.2/db/migrate/20190620000003_create_spell_books.rb +1 -0
  55. data/spec/support/v5.2/db/schema.rb +1 -0
  56. data/spec/support/v5.2/sorbet_test_cases.rb +78 -40
  57. data/spec/support/v6.0/Gemfile +2 -3
  58. data/spec/support/v6.0/Gemfile.lock +64 -64
  59. data/spec/support/v6.0/app/models/application_record.rb +1 -2
  60. data/spec/support/v6.0/app/models/spell_book.rb +7 -1
  61. data/spec/support/v6.0/app/models/wizard.rb +2 -0
  62. data/spec/support/v6.0/config/puma.rb +3 -0
  63. data/spec/support/v6.0/db/migrate/20190620000003_create_spell_books.rb +1 -0
  64. data/spec/support/v6.0/db/schema.rb +1 -0
  65. data/spec/support/v6.0/sorbet_test_cases.rb +78 -40
  66. data/spec/test_data/v4.2/expected_no_routes.rbi +3 -10
  67. data/spec/test_data/v4.2/expected_potion.rbi +356 -52
  68. data/spec/test_data/v4.2/expected_routes.rbi +10 -4
  69. data/spec/test_data/v4.2/expected_spell_book.rbi +428 -53
  70. data/spec/test_data/v4.2/expected_srb_tc_output.txt +1 -80
  71. data/spec/test_data/v4.2/expected_wand.rbi +347 -19
  72. data/spec/test_data/v4.2/expected_wizard.rbi +356 -16
  73. data/spec/test_data/v4.2/expected_wizard_wo_spellbook.rbi +356 -16
  74. data/spec/test_data/v5.0/expected_internal_metadata.rbi +385 -51
  75. data/spec/test_data/v5.0/expected_no_routes.rbi +3 -10
  76. data/spec/test_data/v5.0/expected_potion.rbi +383 -52
  77. data/spec/test_data/v5.0/expected_routes.rbi +10 -4
  78. data/spec/test_data/v5.0/expected_schema_migration.rbi +385 -51
  79. data/spec/test_data/v5.0/expected_spell_book.rbi +455 -53
  80. data/spec/test_data/v5.0/expected_srb_tc_output.txt +1 -98
  81. data/spec/test_data/v5.0/expected_wand.rbi +374 -19
  82. data/spec/test_data/v5.0/expected_wizard.rbi +383 -16
  83. data/spec/test_data/v5.0/expected_wizard_wo_spellbook.rbi +383 -16
  84. data/spec/test_data/v5.1/expected_internal_metadata.rbi +403 -51
  85. data/spec/test_data/v5.1/expected_no_routes.rbi +3 -10
  86. data/spec/test_data/v5.1/expected_potion.rbi +401 -52
  87. data/spec/test_data/v5.1/expected_routes.rbi +10 -4
  88. data/spec/test_data/v5.1/expected_schema_migration.rbi +403 -51
  89. data/spec/test_data/v5.1/expected_spell_book.rbi +473 -53
  90. data/spec/test_data/v5.1/expected_srb_tc_output.txt +1 -80
  91. data/spec/test_data/v5.1/expected_wand.rbi +392 -19
  92. data/spec/test_data/v5.1/expected_wizard.rbi +401 -16
  93. data/spec/test_data/v5.1/expected_wizard_wo_spellbook.rbi +401 -16
  94. data/spec/test_data/v5.2-no-sorbet/expected_attachment.rbi +403 -51
  95. data/spec/test_data/v5.2-no-sorbet/expected_blob.rbi +421 -51
  96. data/spec/test_data/v5.2-no-sorbet/expected_internal_metadata.rbi +403 -51
  97. data/spec/test_data/v5.2-no-sorbet/expected_no_routes.rbi +3 -10
  98. data/spec/test_data/v5.2-no-sorbet/expected_potion.rbi +401 -52
  99. data/spec/test_data/v5.2-no-sorbet/expected_routes.rbi +15 -4
  100. data/spec/test_data/v5.2-no-sorbet/expected_schema_migration.rbi +403 -51
  101. data/spec/test_data/v5.2-no-sorbet/expected_spell_book.rbi +473 -53
  102. data/spec/test_data/v5.2-no-sorbet/expected_srb_tc_output.txt +1 -80
  103. data/spec/test_data/v5.2-no-sorbet/expected_wand.rbi +392 -19
  104. data/spec/test_data/v5.2-no-sorbet/expected_wizard.rbi +401 -16
  105. data/spec/test_data/v5.2-no-sorbet/expected_wizard_wo_spellbook.rbi +401 -16
  106. data/spec/test_data/v5.2/expected_attachment.rbi +403 -51
  107. data/spec/test_data/v5.2/expected_blob.rbi +421 -51
  108. data/spec/test_data/v5.2/expected_internal_metadata.rbi +403 -51
  109. data/spec/test_data/v5.2/expected_no_routes.rbi +3 -10
  110. data/spec/test_data/v5.2/expected_potion.rbi +401 -52
  111. data/spec/test_data/v5.2/expected_routes.rbi +15 -4
  112. data/spec/test_data/v5.2/expected_schema_migration.rbi +403 -51
  113. data/spec/test_data/v5.2/expected_spell_book.rbi +473 -53
  114. data/spec/test_data/v5.2/expected_srb_tc_output.txt +1 -80
  115. data/spec/test_data/v5.2/expected_wand.rbi +392 -19
  116. data/spec/test_data/v5.2/expected_wizard.rbi +401 -16
  117. data/spec/test_data/v5.2/expected_wizard_wo_spellbook.rbi +401 -16
  118. data/spec/test_data/v6.0/expected_attachment.rbi +439 -51
  119. data/spec/test_data/v6.0/expected_blob.rbi +457 -51
  120. data/spec/test_data/v6.0/expected_internal_metadata.rbi +439 -51
  121. data/spec/test_data/v6.0/expected_no_routes.rbi +3 -10
  122. data/spec/test_data/v6.0/expected_potion.rbi +437 -52
  123. data/spec/test_data/v6.0/expected_routes.rbi +25 -4
  124. data/spec/test_data/v6.0/expected_schema_migration.rbi +439 -51
  125. data/spec/test_data/v6.0/expected_spell_book.rbi +545 -53
  126. data/spec/test_data/v6.0/expected_srb_tc_output.txt +1 -80
  127. data/spec/test_data/v6.0/expected_wand.rbi +464 -19
  128. data/spec/test_data/v6.0/expected_wizard.rbi +473 -16
  129. data/spec/test_data/v6.0/expected_wizard_wo_spellbook.rbi +473 -16
  130. metadata +29 -581
  131. data/spec/support/v4.2/sorbet/config +0 -2
  132. data/spec/support/v4.2/sorbet/rbi/gems/actionmailer.rbi +0 -267
  133. data/spec/support/v4.2/sorbet/rbi/gems/actionpack.rbi +0 -2883
  134. data/spec/support/v4.2/sorbet/rbi/gems/actionview.rbi +0 -978
  135. data/spec/support/v4.2/sorbet/rbi/gems/activejob.rbi +0 -19
  136. data/spec/support/v4.2/sorbet/rbi/gems/activemodel.rbi +0 -335
  137. data/spec/support/v4.2/sorbet/rbi/gems/activerecord.rbi +0 -3385
  138. data/spec/support/v4.2/sorbet/rbi/gems/activesupport.rbi +0 -1892
  139. data/spec/support/v4.2/sorbet/rbi/gems/arel.rbi +0 -1109
  140. data/spec/support/v4.2/sorbet/rbi/gems/byebug.rbi +0 -1039
  141. data/spec/support/v4.2/sorbet/rbi/gems/concurrent-ruby.rbi +0 -218
  142. data/spec/support/v4.2/sorbet/rbi/gems/crass.rbi +0 -92
  143. data/spec/support/v4.2/sorbet/rbi/gems/erubis.rbi +0 -265
  144. data/spec/support/v4.2/sorbet/rbi/gems/globalid.rbi +0 -98
  145. data/spec/support/v4.2/sorbet/rbi/gems/i18n.rbi +0 -186
  146. data/spec/support/v4.2/sorbet/rbi/gems/jbuilder.rbi +0 -99
  147. data/spec/support/v4.2/sorbet/rbi/gems/loofah.rbi +0 -129
  148. data/spec/support/v4.2/sorbet/rbi/gems/mail.rbi +0 -1091
  149. data/spec/support/v4.2/sorbet/rbi/gems/mini_mime.rbi +0 -51
  150. data/spec/support/v4.2/sorbet/rbi/gems/minitest.rbi +0 -276
  151. data/spec/support/v4.2/sorbet/rbi/gems/nokogiri.rbi +0 -1010
  152. data/spec/support/v4.2/sorbet/rbi/gems/parlour.rbi +0 -214
  153. data/spec/support/v4.2/sorbet/rbi/gems/rack-test.rbi +0 -145
  154. data/spec/support/v4.2/sorbet/rbi/gems/rack.rbi +0 -490
  155. data/spec/support/v4.2/sorbet/rbi/gems/rails-deprecated_sanitizer.rbi +0 -13
  156. data/spec/support/v4.2/sorbet/rbi/gems/rails-dom-testing.rbi +0 -76
  157. data/spec/support/v4.2/sorbet/rbi/gems/rails-html-sanitizer.rbi +0 -91
  158. data/spec/support/v4.2/sorbet/rbi/gems/railties.rbi +0 -617
  159. data/spec/support/v4.2/sorbet/rbi/gems/sqlite3.rbi +0 -345
  160. data/spec/support/v4.2/sorbet/rbi/gems/thor.rbi +0 -401
  161. data/spec/support/v4.2/sorbet/rbi/gems/thread_safe.rbi +0 -81
  162. data/spec/support/v4.2/sorbet/rbi/gems/tzinfo.rbi +0 -407
  163. data/spec/support/v4.2/sorbet/rbi/sorbet-typed/lib/actionmailer/all/actionmailer.rbi +0 -13
  164. data/spec/support/v4.2/sorbet/rbi/sorbet-typed/lib/actionpack/all/actionpack.rbi +0 -468
  165. data/spec/support/v4.2/sorbet/rbi/sorbet-typed/lib/activemodel/all/activemodel.rbi +0 -422
  166. data/spec/support/v4.2/sorbet/rbi/sorbet-typed/lib/activerecord/all/activerecord.rbi +0 -1263
  167. data/spec/support/v4.2/sorbet/rbi/sorbet-typed/lib/activesupport/all/activesupport.rbi +0 -458
  168. data/spec/support/v4.2/sorbet/rbi/sorbet-typed/lib/bundler/all/bundler.rbi +0 -8575
  169. data/spec/support/v4.2/sorbet/rbi/sorbet-typed/lib/minitest/all/minitest.rbi +0 -99
  170. data/spec/support/v4.2/sorbet/rbi/sorbet-typed/lib/railties/all/railties.rbi +0 -22
  171. data/spec/support/v4.2/sorbet/rbi/sorbet-typed/lib/ruby/all/open3.rbi +0 -111
  172. data/spec/support/v4.2/sorbet/rbi/sorbet-typed/lib/ruby/all/resolv.rbi +0 -543
  173. data/spec/support/v4.2/sorbet/rbi/todo.rbi +0 -66
  174. data/spec/support/v5.0/sorbet/config +0 -2
  175. data/spec/support/v5.0/sorbet/rbi/gems/actionmailer.rbi +0 -331
  176. data/spec/support/v5.0/sorbet/rbi/gems/actionpack.rbi +0 -2987
  177. data/spec/support/v5.0/sorbet/rbi/gems/actionview.rbi +0 -1092
  178. data/spec/support/v5.0/sorbet/rbi/gems/activejob.rbi +0 -230
  179. data/spec/support/v5.0/sorbet/rbi/gems/activemodel.rbi +0 -562
  180. data/spec/support/v5.0/sorbet/rbi/gems/activerecord.rbi +0 -3684
  181. data/spec/support/v5.0/sorbet/rbi/gems/activesupport.rbi +0 -1943
  182. data/spec/support/v5.0/sorbet/rbi/gems/arel.rbi +0 -1222
  183. data/spec/support/v5.0/sorbet/rbi/gems/byebug.rbi +0 -1039
  184. data/spec/support/v5.0/sorbet/rbi/gems/concurrent-ruby.rbi +0 -1587
  185. data/spec/support/v5.0/sorbet/rbi/gems/crass.rbi +0 -92
  186. data/spec/support/v5.0/sorbet/rbi/gems/erubis.rbi +0 -265
  187. data/spec/support/v5.0/sorbet/rbi/gems/globalid.rbi +0 -98
  188. data/spec/support/v5.0/sorbet/rbi/gems/i18n.rbi +0 -191
  189. data/spec/support/v5.0/sorbet/rbi/gems/jbuilder.rbi +0 -99
  190. data/spec/support/v5.0/sorbet/rbi/gems/loofah.rbi +0 -129
  191. data/spec/support/v5.0/sorbet/rbi/gems/mail.rbi +0 -1091
  192. data/spec/support/v5.0/sorbet/rbi/gems/mini_mime.rbi +0 -51
  193. data/spec/support/v5.0/sorbet/rbi/gems/nokogiri.rbi +0 -1010
  194. data/spec/support/v5.0/sorbet/rbi/gems/parlour.rbi +0 -214
  195. data/spec/support/v5.0/sorbet/rbi/gems/puma.rbi +0 -570
  196. data/spec/support/v5.0/sorbet/rbi/gems/rack-test.rbi +0 -145
  197. data/spec/support/v5.0/sorbet/rbi/gems/rack.rbi +0 -489
  198. data/spec/support/v5.0/sorbet/rbi/gems/rails-html-sanitizer.rbi +0 -91
  199. data/spec/support/v5.0/sorbet/rbi/gems/railties.rbi +0 -472
  200. data/spec/support/v5.0/sorbet/rbi/gems/sqlite3.rbi +0 -345
  201. data/spec/support/v5.0/sorbet/rbi/gems/thread_safe.rbi +0 -81
  202. data/spec/support/v5.0/sorbet/rbi/gems/tzinfo.rbi +0 -407
  203. data/spec/support/v5.0/sorbet/rbi/sorbet-typed/lib/actionmailer/all/actionmailer.rbi +0 -13
  204. data/spec/support/v5.0/sorbet/rbi/sorbet-typed/lib/actionpack/all/actionpack.rbi +0 -468
  205. data/spec/support/v5.0/sorbet/rbi/sorbet-typed/lib/activemodel/all/activemodel.rbi +0 -422
  206. data/spec/support/v5.0/sorbet/rbi/sorbet-typed/lib/activerecord/all/activerecord.rbi +0 -1263
  207. data/spec/support/v5.0/sorbet/rbi/sorbet-typed/lib/activesupport/all/activesupport.rbi +0 -458
  208. data/spec/support/v5.0/sorbet/rbi/sorbet-typed/lib/bundler/all/bundler.rbi +0 -8575
  209. data/spec/support/v5.0/sorbet/rbi/sorbet-typed/lib/minitest/all/minitest.rbi +0 -99
  210. data/spec/support/v5.0/sorbet/rbi/sorbet-typed/lib/railties/all/railties.rbi +0 -22
  211. data/spec/support/v5.0/sorbet/rbi/sorbet-typed/lib/ruby/all/open3.rbi +0 -111
  212. data/spec/support/v5.0/sorbet/rbi/sorbet-typed/lib/ruby/all/resolv.rbi +0 -543
  213. data/spec/support/v5.0/sorbet/rbi/todo.rbi +0 -68
  214. data/spec/support/v5.1/sorbet/config +0 -2
  215. data/spec/support/v5.1/sorbet/rbi/gems/actionmailer.rbi +0 -382
  216. data/spec/support/v5.1/sorbet/rbi/gems/actionpack.rbi +0 -3027
  217. data/spec/support/v5.1/sorbet/rbi/gems/actionview.rbi +0 -1114
  218. data/spec/support/v5.1/sorbet/rbi/gems/activejob.rbi +0 -238
  219. data/spec/support/v5.1/sorbet/rbi/gems/activemodel.rbi +0 -547
  220. data/spec/support/v5.1/sorbet/rbi/gems/activerecord.rbi +0 -3943
  221. data/spec/support/v5.1/sorbet/rbi/gems/activesupport.rbi +0 -2042
  222. data/spec/support/v5.1/sorbet/rbi/gems/arel.rbi +0 -1220
  223. data/spec/support/v5.1/sorbet/rbi/gems/bindex.rbi +0 -36
  224. data/spec/support/v5.1/sorbet/rbi/gems/byebug.rbi +0 -1039
  225. data/spec/support/v5.1/sorbet/rbi/gems/concurrent-ruby.rbi +0 -1587
  226. data/spec/support/v5.1/sorbet/rbi/gems/crass.rbi +0 -92
  227. data/spec/support/v5.1/sorbet/rbi/gems/erubi.rbi +0 -26
  228. data/spec/support/v5.1/sorbet/rbi/gems/globalid.rbi +0 -98
  229. data/spec/support/v5.1/sorbet/rbi/gems/i18n.rbi +0 -191
  230. data/spec/support/v5.1/sorbet/rbi/gems/jbuilder.rbi +0 -99
  231. data/spec/support/v5.1/sorbet/rbi/gems/loofah.rbi +0 -129
  232. data/spec/support/v5.1/sorbet/rbi/gems/mail.rbi +0 -1091
  233. data/spec/support/v5.1/sorbet/rbi/gems/mini_mime.rbi +0 -51
  234. data/spec/support/v5.1/sorbet/rbi/gems/nokogiri.rbi +0 -1010
  235. data/spec/support/v5.1/sorbet/rbi/gems/parlour.rbi +0 -214
  236. data/spec/support/v5.1/sorbet/rbi/gems/puma.rbi +0 -570
  237. data/spec/support/v5.1/sorbet/rbi/gems/rack-test.rbi +0 -161
  238. data/spec/support/v5.1/sorbet/rbi/gems/rack.rbi +0 -489
  239. data/spec/support/v5.1/sorbet/rbi/gems/rails-html-sanitizer.rbi +0 -91
  240. data/spec/support/v5.1/sorbet/rbi/gems/railties.rbi +0 -498
  241. data/spec/support/v5.1/sorbet/rbi/gems/sqlite3.rbi +0 -353
  242. data/spec/support/v5.1/sorbet/rbi/gems/thread_safe.rbi +0 -81
  243. data/spec/support/v5.1/sorbet/rbi/gems/tzinfo.rbi +0 -407
  244. data/spec/support/v5.1/sorbet/rbi/gems/web-console.rbi +0 -73
  245. data/spec/support/v5.1/sorbet/rbi/sorbet-typed/lib/actionmailer/all/actionmailer.rbi +0 -13
  246. data/spec/support/v5.1/sorbet/rbi/sorbet-typed/lib/actionpack/all/actionpack.rbi +0 -468
  247. data/spec/support/v5.1/sorbet/rbi/sorbet-typed/lib/activemodel/all/activemodel.rbi +0 -422
  248. data/spec/support/v5.1/sorbet/rbi/sorbet-typed/lib/activerecord/all/activerecord.rbi +0 -1263
  249. data/spec/support/v5.1/sorbet/rbi/sorbet-typed/lib/activesupport/all/activesupport.rbi +0 -458
  250. data/spec/support/v5.1/sorbet/rbi/sorbet-typed/lib/bundler/all/bundler.rbi +0 -8575
  251. data/spec/support/v5.1/sorbet/rbi/sorbet-typed/lib/minitest/all/minitest.rbi +0 -99
  252. data/spec/support/v5.1/sorbet/rbi/sorbet-typed/lib/railties/all/railties.rbi +0 -22
  253. data/spec/support/v5.1/sorbet/rbi/sorbet-typed/lib/ruby/all/open3.rbi +0 -111
  254. data/spec/support/v5.1/sorbet/rbi/sorbet-typed/lib/ruby/all/resolv.rbi +0 -543
  255. data/spec/support/v5.1/sorbet/rbi/todo.rbi +0 -68
  256. data/spec/support/v5.2-no-sorbet/.gitignore +0 -31
  257. data/spec/support/v5.2-no-sorbet/Gemfile +0 -39
  258. data/spec/support/v5.2-no-sorbet/Gemfile.lock +0 -156
  259. data/spec/support/v5.2-no-sorbet/README.md +0 -24
  260. data/spec/support/v5.2-no-sorbet/Rakefile +0 -6
  261. data/spec/support/v5.2-no-sorbet/app/assets/config/manifest.js +0 -2
  262. data/spec/support/v5.2-no-sorbet/app/assets/images/.keep +0 -0
  263. data/spec/support/v5.2-no-sorbet/app/assets/stylesheets/application.css +0 -15
  264. data/spec/support/v5.2-no-sorbet/app/controllers/application_controller.rb +0 -2
  265. data/spec/support/v5.2-no-sorbet/app/controllers/concerns/.keep +0 -0
  266. data/spec/support/v5.2-no-sorbet/app/helpers/application_helper.rb +0 -2
  267. data/spec/support/v5.2-no-sorbet/app/helpers/bar_helper.rb +0 -2
  268. data/spec/support/v5.2-no-sorbet/app/helpers/baz_helper.rb +0 -2
  269. data/spec/support/v5.2-no-sorbet/app/helpers/foo_helper.rb +0 -2
  270. data/spec/support/v5.2-no-sorbet/app/jobs/application_job.rb +0 -2
  271. data/spec/support/v5.2-no-sorbet/app/mailers/application_mailer.rb +0 -4
  272. data/spec/support/v5.2-no-sorbet/app/models/application_record.rb +0 -4
  273. data/spec/support/v5.2-no-sorbet/app/models/concerns/.keep +0 -0
  274. data/spec/support/v5.2-no-sorbet/app/models/concerns/mythical.rb +0 -10
  275. data/spec/support/v5.2-no-sorbet/app/models/potion.rb +0 -4
  276. data/spec/support/v5.2-no-sorbet/app/models/spell_book.rb +0 -4
  277. data/spec/support/v5.2-no-sorbet/app/models/wand.rb +0 -16
  278. data/spec/support/v5.2-no-sorbet/app/models/wizard.rb +0 -13
  279. data/spec/support/v5.2-no-sorbet/app/views/layouts/application.html.erb +0 -14
  280. data/spec/support/v5.2-no-sorbet/app/views/layouts/mailer.html.erb +0 -13
  281. data/spec/support/v5.2-no-sorbet/app/views/layouts/mailer.text.erb +0 -1
  282. data/spec/support/v5.2-no-sorbet/bin/bundle +0 -3
  283. data/spec/support/v5.2-no-sorbet/bin/rails +0 -4
  284. data/spec/support/v5.2-no-sorbet/bin/rake +0 -4
  285. data/spec/support/v5.2-no-sorbet/bin/setup +0 -36
  286. data/spec/support/v5.2-no-sorbet/bin/update +0 -31
  287. data/spec/support/v5.2-no-sorbet/bin/yarn +0 -11
  288. data/spec/support/v5.2-no-sorbet/config.ru +0 -5
  289. data/spec/support/v5.2-no-sorbet/config/application.rb +0 -33
  290. data/spec/support/v5.2-no-sorbet/config/boot.rb +0 -3
  291. data/spec/support/v5.2-no-sorbet/config/database.yml +0 -25
  292. data/spec/support/v5.2-no-sorbet/config/environment.rb +0 -5
  293. data/spec/support/v5.2-no-sorbet/config/environments/development.rb +0 -54
  294. data/spec/support/v5.2-no-sorbet/config/environments/production.rb +0 -80
  295. data/spec/support/v5.2-no-sorbet/config/environments/test.rb +0 -46
  296. data/spec/support/v5.2-no-sorbet/config/initializers/application_controller_renderer.rb +0 -8
  297. data/spec/support/v5.2-no-sorbet/config/initializers/backtrace_silencers.rb +0 -7
  298. data/spec/support/v5.2-no-sorbet/config/initializers/content_security_policy.rb +0 -25
  299. data/spec/support/v5.2-no-sorbet/config/initializers/cookies_serializer.rb +0 -5
  300. data/spec/support/v5.2-no-sorbet/config/initializers/filter_parameter_logging.rb +0 -4
  301. data/spec/support/v5.2-no-sorbet/config/initializers/inflections.rb +0 -16
  302. data/spec/support/v5.2-no-sorbet/config/initializers/mime_types.rb +0 -4
  303. data/spec/support/v5.2-no-sorbet/config/initializers/sorbet_rails.rb +0 -3
  304. data/spec/support/v5.2-no-sorbet/config/initializers/wrap_parameters.rb +0 -14
  305. data/spec/support/v5.2-no-sorbet/config/locales/en.yml +0 -33
  306. data/spec/support/v5.2-no-sorbet/config/puma.rb +0 -34
  307. data/spec/support/v5.2-no-sorbet/config/routes.rb +0 -4
  308. data/spec/support/v5.2-no-sorbet/config/storage.yml +0 -34
  309. data/spec/support/v5.2-no-sorbet/db/migrate/20190620000001_create_wizards.rb +0 -12
  310. data/spec/support/v5.2-no-sorbet/db/migrate/20190620000002_create_wands.rb +0 -11
  311. data/spec/support/v5.2-no-sorbet/db/migrate/20190620000003_create_spell_books.rb +0 -8
  312. data/spec/support/v5.2-no-sorbet/db/migrate/20190620000004_add_more_column_types_to_wands.rb +0 -15
  313. data/spec/support/v5.2-no-sorbet/db/schema.rb +0 -47
  314. data/spec/support/v5.2-no-sorbet/db/seeds.rb +0 -7
  315. data/spec/support/v5.2-no-sorbet/lib/assets/.keep +0 -0
  316. data/spec/support/v5.2-no-sorbet/lib/mythical_rbi_plugin.rb +0 -16
  317. data/spec/support/v5.2-no-sorbet/lib/tasks/.keep +0 -0
  318. data/spec/support/v5.2-no-sorbet/log/.keep +0 -0
  319. data/spec/support/v5.2-no-sorbet/package.json +0 -5
  320. data/spec/support/v5.2-no-sorbet/sorbet_test_cases.rb +0 -123
  321. data/spec/support/v5.2-no-sorbet/storage/.keep +0 -0
  322. data/spec/support/v5.2-no-sorbet/tmp/.keep +0 -0
  323. data/spec/support/v5.2-no-sorbet/typed-override.yaml +0 -2
  324. data/spec/support/v5.2-no-sorbet/vendor/.keep +0 -0
  325. data/spec/support/v5.2/sorbet/config +0 -2
  326. data/spec/support/v5.2/sorbet/rbi/gems/actionmailer.rbi +0 -391
  327. data/spec/support/v5.2/sorbet/rbi/gems/actionpack.rbi +0 -3109
  328. data/spec/support/v5.2/sorbet/rbi/gems/actionview.rbi +0 -1128
  329. data/spec/support/v5.2/sorbet/rbi/gems/activejob.rbi +0 -244
  330. data/spec/support/v5.2/sorbet/rbi/gems/activemodel.rbi +0 -741
  331. data/spec/support/v5.2/sorbet/rbi/gems/activerecord.rbi +0 -3827
  332. data/spec/support/v5.2/sorbet/rbi/gems/activestorage.rbi +0 -173
  333. data/spec/support/v5.2/sorbet/rbi/gems/activesupport.rbi +0 -2167
  334. data/spec/support/v5.2/sorbet/rbi/gems/arel.rbi +0 -1252
  335. data/spec/support/v5.2/sorbet/rbi/gems/bindex.rbi +0 -36
  336. data/spec/support/v5.2/sorbet/rbi/gems/byebug.rbi +0 -1039
  337. data/spec/support/v5.2/sorbet/rbi/gems/concurrent-ruby.rbi +0 -1587
  338. data/spec/support/v5.2/sorbet/rbi/gems/crass.rbi +0 -92
  339. data/spec/support/v5.2/sorbet/rbi/gems/erubi.rbi +0 -26
  340. data/spec/support/v5.2/sorbet/rbi/gems/globalid.rbi +0 -98
  341. data/spec/support/v5.2/sorbet/rbi/gems/i18n.rbi +0 -191
  342. data/spec/support/v5.2/sorbet/rbi/gems/jbuilder.rbi +0 -99
  343. data/spec/support/v5.2/sorbet/rbi/gems/loofah.rbi +0 -129
  344. data/spec/support/v5.2/sorbet/rbi/gems/mail.rbi +0 -1091
  345. data/spec/support/v5.2/sorbet/rbi/gems/marcel.rbi +0 -12
  346. data/spec/support/v5.2/sorbet/rbi/gems/mini_mime.rbi +0 -51
  347. data/spec/support/v5.2/sorbet/rbi/gems/nokogiri.rbi +0 -1010
  348. data/spec/support/v5.2/sorbet/rbi/gems/parlour.rbi +0 -214
  349. data/spec/support/v5.2/sorbet/rbi/gems/puma.rbi +0 -570
  350. data/spec/support/v5.2/sorbet/rbi/gems/rack-test.rbi +0 -161
  351. data/spec/support/v5.2/sorbet/rbi/gems/rack.rbi +0 -493
  352. data/spec/support/v5.2/sorbet/rbi/gems/rails-html-sanitizer.rbi +0 -91
  353. data/spec/support/v5.2/sorbet/rbi/gems/railties.rbi +0 -508
  354. data/spec/support/v5.2/sorbet/rbi/gems/sqlite3.rbi +0 -353
  355. data/spec/support/v5.2/sorbet/rbi/gems/thread_safe.rbi +0 -81
  356. data/spec/support/v5.2/sorbet/rbi/gems/tzinfo.rbi +0 -407
  357. data/spec/support/v5.2/sorbet/rbi/gems/web-console.rbi +0 -73
  358. data/spec/support/v5.2/sorbet/rbi/sorbet-typed/lib/actionmailer/all/actionmailer.rbi +0 -13
  359. data/spec/support/v5.2/sorbet/rbi/sorbet-typed/lib/actionpack/all/actionpack.rbi +0 -468
  360. data/spec/support/v5.2/sorbet/rbi/sorbet-typed/lib/activemodel/all/activemodel.rbi +0 -422
  361. data/spec/support/v5.2/sorbet/rbi/sorbet-typed/lib/activerecord/>=5.2/activerecord.rbi +0 -17
  362. data/spec/support/v5.2/sorbet/rbi/sorbet-typed/lib/activerecord/all/activerecord.rbi +0 -1263
  363. data/spec/support/v5.2/sorbet/rbi/sorbet-typed/lib/activerecord/~>5.2.0/activerecord.rbi +0 -10
  364. data/spec/support/v5.2/sorbet/rbi/sorbet-typed/lib/activesupport/all/activesupport.rbi +0 -458
  365. data/spec/support/v5.2/sorbet/rbi/sorbet-typed/lib/bundler/all/bundler.rbi +0 -8575
  366. data/spec/support/v5.2/sorbet/rbi/sorbet-typed/lib/minitest/all/minitest.rbi +0 -99
  367. data/spec/support/v5.2/sorbet/rbi/sorbet-typed/lib/railties/all/railties.rbi +0 -22
  368. data/spec/support/v5.2/sorbet/rbi/sorbet-typed/lib/ruby/all/open3.rbi +0 -111
  369. data/spec/support/v5.2/sorbet/rbi/sorbet-typed/lib/ruby/all/resolv.rbi +0 -543
  370. data/spec/support/v5.2/sorbet/rbi/todo.rbi +0 -68
  371. data/spec/support/v6.0/sorbet/config +0 -2
  372. data/spec/support/v6.0/sorbet/rbi/gems/actionmailbox.rbi +0 -56
  373. data/spec/support/v6.0/sorbet/rbi/gems/actionmailer.rbi +0 -20
  374. data/spec/support/v6.0/sorbet/rbi/gems/actionpack.rbi +0 -2154
  375. data/spec/support/v6.0/sorbet/rbi/gems/actiontext.rbi +0 -32
  376. data/spec/support/v6.0/sorbet/rbi/gems/actionview.rbi +0 -1135
  377. data/spec/support/v6.0/sorbet/rbi/gems/activejob.rbi +0 -80
  378. data/spec/support/v6.0/sorbet/rbi/gems/activemodel.rbi +0 -751
  379. data/spec/support/v6.0/sorbet/rbi/gems/activerecord.rbi +0 -5414
  380. data/spec/support/v6.0/sorbet/rbi/gems/activestorage.rbi +0 -221
  381. data/spec/support/v6.0/sorbet/rbi/gems/activesupport.rbi +0 -2251
  382. data/spec/support/v6.0/sorbet/rbi/gems/bindex.rbi +0 -36
  383. data/spec/support/v6.0/sorbet/rbi/gems/byebug.rbi +0 -1039
  384. data/spec/support/v6.0/sorbet/rbi/gems/concurrent-ruby.rbi +0 -1587
  385. data/spec/support/v6.0/sorbet/rbi/gems/crass.rbi +0 -92
  386. data/spec/support/v6.0/sorbet/rbi/gems/erubi.rbi +0 -26
  387. data/spec/support/v6.0/sorbet/rbi/gems/globalid.rbi +0 -98
  388. data/spec/support/v6.0/sorbet/rbi/gems/i18n.rbi +0 -191
  389. data/spec/support/v6.0/sorbet/rbi/gems/jbuilder.rbi +0 -99
  390. data/spec/support/v6.0/sorbet/rbi/gems/loofah.rbi +0 -129
  391. data/spec/support/v6.0/sorbet/rbi/gems/mail.rbi +0 -1542
  392. data/spec/support/v6.0/sorbet/rbi/gems/marcel.rbi +0 -12
  393. data/spec/support/v6.0/sorbet/rbi/gems/mini_mime.rbi +0 -51
  394. data/spec/support/v6.0/sorbet/rbi/gems/nokogiri.rbi +0 -1010
  395. data/spec/support/v6.0/sorbet/rbi/gems/parlour.rbi +0 -214
  396. data/spec/support/v6.0/sorbet/rbi/gems/puma.rbi +0 -570
  397. data/spec/support/v6.0/sorbet/rbi/gems/rack-test.rbi +0 -161
  398. data/spec/support/v6.0/sorbet/rbi/gems/rack.rbi +0 -481
  399. data/spec/support/v6.0/sorbet/rbi/gems/rails-html-sanitizer.rbi +0 -91
  400. data/spec/support/v6.0/sorbet/rbi/gems/railties.rbi +0 -548
  401. data/spec/support/v6.0/sorbet/rbi/gems/sqlite3.rbi +0 -353
  402. data/spec/support/v6.0/sorbet/rbi/gems/thread_safe.rbi +0 -81
  403. data/spec/support/v6.0/sorbet/rbi/gems/tzinfo.rbi +0 -407
  404. data/spec/support/v6.0/sorbet/rbi/gems/web-console.rbi +0 -72
  405. data/spec/support/v6.0/sorbet/rbi/gems/zeitwerk.rbi +0 -127
  406. data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/actionmailer/all/actionmailer.rbi +0 -13
  407. data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/actionpack/all/actionpack.rbi +0 -468
  408. data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/activemodel/all/activemodel.rbi +0 -422
  409. data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/activerecord/>=5.2/activerecord.rbi +0 -17
  410. data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/activerecord/all/activerecord.rbi +0 -1263
  411. data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/activerecord/~>6.0.0.rc1/activerecord.rbi +0 -10
  412. data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/activesupport/>=6.0.0.rc1/activesupport.rbi +0 -23
  413. data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/activesupport/all/activesupport.rbi +0 -458
  414. data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/bundler/all/bundler.rbi +0 -8575
  415. data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/minitest/all/minitest.rbi +0 -99
  416. data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/railties/all/railties.rbi +0 -22
  417. data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/ruby/all/open3.rbi +0 -111
  418. data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/ruby/all/resolv.rbi +0 -543
  419. data/spec/support/v6.0/sorbet/rbi/todo.rbi +0 -70
@@ -4,62 +4,76 @@ class SorbetRails::RoutesRbiFormatter
4
4
 
5
5
  sig { void }
6
6
  def initialize
7
- @buffer = T.let([], T::Array[T.any(String, T::Array[String])])
7
+ @parlour = T.let(Parlour::RbiGenerator.new, Parlour::RbiGenerator)
8
8
  end
9
9
 
10
10
  sig { params(title: String).void }
11
11
  def section_title(title)
12
- @buffer << "\n# Section #{title}"
12
+ nil
13
13
  end
14
14
 
15
15
  sig { params(routes: T::Array[T::Hash[Symbol, String]]).void }
16
16
  def section(routes)
17
- @buffer << draw_section(routes)
17
+ draw_section(routes)
18
18
  end
19
19
 
20
- sig { params(routes: T.untyped).returns(NilClass) }
20
+ sig { params(routes: T.untyped).void }
21
21
  def header(routes)
22
+ @parlour.root.add_comments([
23
+ 'This is an autogenerated file for Rails routes.',
24
+ 'Please run rake rails_rbi:routes to regenerate.'
25
+ ])
26
+
27
+ @parlour.root.create_class('ActionController::Base') do |klass|
28
+ klass.create_include('GeneratedUrlHelpers')
29
+ end
30
+
31
+ @parlour.root.create_module('ActionView::Helpers') do |mod|
32
+ mod.create_include('GeneratedUrlHelpers')
33
+ end
22
34
  end
23
35
 
24
36
  sig { params(routes: T.untyped, filter: T.untyped).void }
25
- def no_routes(routes=nil, filter=nil)
26
- @buffer <<
27
- <<~MESSAGE
28
- # You do not have any routes defined!
29
- # Please add some routes in config/routes.rb.
30
- # For more information about routes, see the Rails guide: https://guides.rubyonrails.org/routing.html.
31
- MESSAGE
37
+ def no_routes(routes = nil, filter = nil)
38
+ @parlour.root.add_comments([
39
+ 'You do not have any routes defined!',
40
+ 'Please add some routes in config/routes.rb.',
41
+ 'For more information about routes, see the Rails guide: https://guides.rubyonrails.org/routing.html.'
42
+ ])
32
43
  end
33
44
 
34
45
  sig { returns(String) }
35
46
  def result
36
- <<~MESSAGE
37
- # This is an autogenerated file for routes helper methods
38
-
39
- # typed: strong
40
- class ActionController::Base
41
- extend T::Sig
42
-
43
- #{@buffer.join("\n").indent(2)}
44
- end
45
- MESSAGE
47
+ # by default parlour doesn't add a \n at the end of file
48
+ @parlour.rbi + "\n"
46
49
  end
47
50
 
48
51
  private
49
- sig { params(routes: T::Array[T::Hash[Symbol, String]]).returns(T::Array[String]) }
52
+
53
+ sig { params(routes: T::Array[T::Hash[Symbol, String]]).void }
50
54
  def draw_section(routes)
51
- routes.map do |r|
52
- if r[:name].present?
53
- <<~MESSAGE
54
- # Sigs for route #{r[:path]}
55
- sig { params(args: T.untyped, kwargs: T.untyped).returns(String) }
56
- def #{r[:name]}_path(*args, **kwargs); end
57
- sig { params(args: T.untyped, kwargs: T.untyped).returns(String) }
58
- def #{r[:name]}_url(*args, **kwargs); end
59
- MESSAGE
60
- else
61
- nil
55
+ @parlour.root.create_module('GeneratedUrlHelpers') do |klass|
56
+ routes.each do |r|
57
+ next unless r[:name].present?
58
+
59
+ klass.add_comment_to_next_child("Sigs for route #{r[:path]}")
60
+ klass.create_method(
61
+ "#{r[:name]}_path",
62
+ parameters: [
63
+ Parlour::RbiGenerator::Parameter.new("*args", type: "T.untyped"),
64
+ Parlour::RbiGenerator::Parameter.new("**kwargs", type: "T.untyped")
65
+ ],
66
+ return_type: "String"
67
+ )
68
+ klass.create_method(
69
+ "#{r[:name]}_url",
70
+ parameters: [
71
+ Parlour::RbiGenerator::Parameter.new("*args", type: "T.untyped"),
72
+ Parlour::RbiGenerator::Parameter.new("**kwargs", type: "T.untyped")
73
+ ],
74
+ return_type: "String"
75
+ )
62
76
  end
63
- end.compact
77
+ end
64
78
  end
65
79
  end
data/sorbet-rails.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = %q{sorbet-rails}
3
- s.version = "0.5.1"
3
+ s.version = "0.5.2"
4
4
  s.date = %q{2019-04-18}
5
5
  s.summary = %q{Set of tools to make Sorbet work with Rails seamlessly.}
6
6
  s.authors = ["Chan Zuckerberg Initiative"]
@@ -8,7 +8,5 @@ RAILS_VERSION=5.0 bash $wd/run_spec.sh
8
8
  RAILS_VERSION=5.1 bash $wd/run_spec.sh
9
9
  RAILS_VERSION=6.0 bash $wd/run_spec.sh
10
10
 
11
- TEST_SRB_INIT=1 bash $wd/run_spec.sh
12
-
13
11
  # Always end with the default version, which is Rails 5.2
14
12
  sh $wd/run_spec.sh
data/spec/bin/run_spec.sh CHANGED
@@ -6,11 +6,7 @@ wd="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
6
6
  current_dir=$(pwd)
7
7
 
8
8
  if [[ -z $RAILS_VERSION ]]; then
9
- if [[ -z $TEST_SRB_INIT ]]; then
10
- rails_dir="$wd/../support/v5.2"
11
- else
12
- rails_dir="$wd/../support/v5.2-no-sorbet"
13
- fi
9
+ rails_dir="$wd/../support/v5.2"
14
10
  else
15
11
  rails_dir="$wd/../support/v$RAILS_VERSION"
16
12
  fi
@@ -67,16 +67,10 @@ def create_helpers
67
67
  end
68
68
 
69
69
  def create_models
70
- if ENV['RAILS_VERSION'] != '4.2'
71
- inject_into_file "app/models/application_record.rb", after: "self.abstract_class = true\n" do
72
- # Need to include indentation manually
73
- " scope :recent, -> { where('created_at > ?', 1.month.ago) }\n"
74
- end
75
- else
70
+ if ENV['RAILS_VERSION'] == '4.2'
76
71
  file "app/models/application_record.rb", <<~RUBY
77
72
  class ApplicationRecord < ActiveRecord::Base
78
73
  self.abstract_class = true
79
- scope :recent, -> { where('created_at > ?', 1.month.ago) }
80
74
  end
81
75
  RUBY
82
76
  end
@@ -85,6 +79,12 @@ def create_models
85
79
  class SpellBook < ApplicationRecord
86
80
  validates :name, length: { minimum: 5 }, presence: true
87
81
  belongs_to :wizard
82
+
83
+ enum book_type: {
84
+ unclassified: 0,
85
+ biology: 1,
86
+ dark_art: 999,
87
+ }
88
88
  end
89
89
  RUBY
90
90
 
@@ -98,16 +98,16 @@ def create_models
98
98
  file "app/models/wand.rb", <<~RUBY
99
99
  class Wand < ApplicationRecord
100
100
  include Mythical
101
-
101
+
102
102
  enum core_type: {
103
103
  phoenix_feather: 0,
104
104
  dragon_heartstring: 1,
105
105
  unicorn_tail_hair: 2,
106
106
  basilisk_horn: 3,
107
107
  }
108
-
108
+
109
109
  belongs_to :wizard
110
-
110
+
111
111
  def wood_type
112
112
  'Type ' + super
113
113
  end
@@ -127,6 +127,8 @@ def create_models
127
127
 
128
128
  has_one :wand
129
129
  has_many :spell_books
130
+
131
+ scope :recent, -> { where('created_at > ?', 1.month.ago) }
130
132
  end
131
133
  RUBY
132
134
 
@@ -159,7 +161,7 @@ def create_migrations
159
161
  t.integer :house
160
162
  t.string :parent_email
161
163
  t.text :notes
162
-
164
+
163
165
  t.timestamps
164
166
  end
165
167
  end
@@ -173,7 +175,7 @@ def create_migrations
173
175
  t.references :wizard, unique: true, null: false
174
176
  t.string :wood_type
175
177
  t.integer :core_type
176
-
178
+
177
179
  t.timestamps
178
180
  end
179
181
  end
@@ -186,6 +188,7 @@ def create_migrations
186
188
  create_table :spell_books do |t|
187
189
  t.string :name
188
190
  t.references :wizard
191
+ t.integer :book_type, null: false, default: 0
189
192
  end
190
193
  end
191
194
  end
@@ -228,7 +231,7 @@ end
228
231
  source_paths
229
232
 
230
233
  if ['4.2', '5.0'].include?(ENV["RAILS_VERSION"])
231
- File.open('Gemfile', 'r+') do |f|
234
+ File.open('Gemfile', 'r+') do |f|
232
235
  out = ""
233
236
  f.each do |line|
234
237
  # We remove sdoc and web-console because they misbehave.
@@ -252,16 +255,20 @@ after_bundle do
252
255
  create_models
253
256
  create_migrations
254
257
  add_sorbet_test_files
255
-
258
+
259
+ bundle_version = ENV["RAILS_VERSION"] == "4.2" ? "_1.17.3_" : ""
260
+
256
261
  Bundler.with_clean_env do
257
262
  # Rails 4.2 doesn't have the rails_command method, so just use run.
258
- run "bundle exec rake db:migrate"
263
+ run "bundle #{bundle_version} exec rake db:migrate"
259
264
  end
260
265
 
261
266
  if ENV["RUN_WITH_SORBET"] != 'false'
262
267
  Bundler.with_clean_env do
263
- run "SRB_YES=true bundle exec srb init"
264
- run "bundle exec rake rails_rbi:all"
268
+ run "SRB_YES=true bundle #{bundle_version} exec srb init"
269
+ run "bundle #{bundle_version} exec rake rails_rbi:all"
270
+ run "bundle #{bundle_version} exec srbi rbi hidden-definitions"
271
+ run "bundle #{bundle_version} exec srb rbi todo"
265
272
  end
266
273
  end
267
274
  say "Done!"
@@ -11,37 +11,30 @@ T.assert_type!(wizard.name, T.nilable(String))
11
11
  T.assert_type!(wizard.wand, T.nilable(Wand))
12
12
  T.assert_type!(T.must(wizard.wand).wizard, Wizard)
13
13
 
14
- T.assert_type!(wizard.spell_books, ActiveRecord::Associations::CollectionProxy)
15
- T.reveal_type(wizard.spell_books) # SpellBook::CollectionProxy
14
+ # need the exact type to works! they aren't subclass of each other
15
+ # T.assert_type!(wizard.spell_books, SpellBook::ActiveRecord_Relation)
16
+ # T.assert_type!(wizard.spell_books, SpellBook::ActiveRecord_AssociationRelation)
17
+ T.assert_type!(wizard.spell_books, SpellBook::ActiveRecord_Associations_CollectionProxy)
16
18
 
17
19
  # -- model relation
18
20
  # default
19
- T.assert_type!(Wizard.all, ActiveRecord::Relation)
20
- T.reveal_type(Wizard.all) # Wizard::ActiveRecord_Relation
21
+ T.assert_type!(Wizard.all, Wizard::ActiveRecord_Relation)
21
22
 
22
23
  # custom scope
23
- T.assert_type!(Wizard.recent, ActiveRecord::Relation)
24
- T.reveal_type(Wizard.recent)
24
+ T.assert_type!(Wizard.recent, Wizard::ActiveRecord_Relation)
25
25
 
26
26
  # enum scope
27
- T.assert_type!(Wizard.Gryffindor, ActiveRecord::Relation)
28
- T.reveal_type(Wizard.Gryffindor)
29
-
30
- # chained scopes
31
- T.assert_type!(Wizard.Gryffindor.recent, ActiveRecord::Relation)
32
- T.reveal_type(Wizard.Gryffindor.recent)
33
- T.assert_type!(Wizard.Gryffindor.recent.unscoped, ActiveRecord::Relation)
34
- T.reveal_type(Wizard.Gryffindor.recent.unscoped)
27
+ T.assert_type!(Wizard.Gryffindor, Wizard::ActiveRecord_Relation)
35
28
 
36
29
  # ActiveRecord Querying
37
- T.assert_type!(Wizard.where(id: 1), ActiveRecord::Relation)
38
- T.reveal_type(Wizard.where(id: 1)) # Wizard::Relation
39
- T.assert_type!(Wizard.preload(:spell_books), ActiveRecord::Relation)
40
- T.reveal_type(Wizard.preload(:spell_books)) # Wizard::Relation
41
- T.assert_type!(Wizard.eager_load(:spell_books), ActiveRecord::Relation)
42
- T.reveal_type(Wizard.eager_load(:spell_books)) # Wizard::Relation
43
- T.assert_type!(Wizard.order(:id), ActiveRecord::Relation)
44
- T.reveal_type(Wizard.order(:id)) # Wizard::Relation
30
+ T.assert_type!(Wizard.Gryffindor.recent, Wizard::ActiveRecord_Relation)
31
+ T.assert_type!(Wizard.Gryffindor.recent.unscoped, Wizard::ActiveRecord_Relation)
32
+ T.assert_type!(Wizard.where(id: 1), Wizard::ActiveRecord_Relation)
33
+ T.assert_type!(Wizard.where(id: 1).recent, Wizard::ActiveRecord_Relation)
34
+ T.assert_type!(Wizard.where.not(id: 1), Wizard::ActiveRecord_Relation)
35
+ T.assert_type!(Wizard.preload(:spell_books), Wizard::ActiveRecord_Relation)
36
+ T.assert_type!(Wizard.eager_load(:spell_books), Wizard::ActiveRecord_Relation)
37
+ T.assert_type!(Wizard.order(:id), Wizard::ActiveRecord_Relation)
45
38
 
46
39
  # Finder methods -- Model
47
40
  T.assert_type!(Wizard.exists?(name: 'Test'), T::Boolean)
@@ -73,51 +66,96 @@ T.assert_type!(Wizard.all.find_by_id!(wizard.id), Wizard)
73
66
 
74
67
  # Finder methods -- CollectionProxy
75
68
  spell_book = wizard.spell_books.first!
76
- T.assert_type!(wizard.spell_books.exists?(name: 'Fantastic Beasts'), T::Boolean)
77
- T.assert_type!(wizard.spell_books.find(spell_book.id), SpellBook)
78
- T.assert_type!(wizard.spell_books.first!, SpellBook)
79
- # T.assert_type!(wizard.spell_books.first, T.nilable(SpellBook)) # TODO fix sig for 4.2 and 5.0
80
- T.assert_type!(wizard.spell_books.last!, SpellBook)
81
- # T.assert_type!(wizard.spell_books.last, T.nilable(SpellBook)) # TODO fix sig for 4.2 and 5.0
82
- T.assert_type!(wizard.spell_books.first_n(5), T::Array[SpellBook])
83
- T.assert_type!(wizard.spell_books.last_n(5), T::Array[SpellBook])
84
- T.assert_type!(wizard.spell_books.find_by(name: 'Fantastic Beasts'), T.nilable(SpellBook))
85
- T.assert_type!(wizard.spell_books.find_by!(name: 'Fantastic Beasts'), SpellBook)
86
- T.assert_type!(wizard.spell_books.find_by_id(spell_book.id), T.nilable(SpellBook))
87
- T.assert_type!(wizard.spell_books.find_by_id!(spell_book.id), SpellBook)
88
-
89
- # Enumerable
69
+ spell_books = wizard.spell_books
70
+ T.assert_type!(spell_books.exists?(name: 'Fantastic Beasts'), T::Boolean)
71
+ T.assert_type!(spell_books.find(spell_book.id), SpellBook)
72
+ T.assert_type!(spell_books.first!, SpellBook)
73
+ # T.assert_type!(spell_books.first, T.nilable(SpellBook)) # TODO fix sig for 4.2 and 5.0
74
+ T.assert_type!(spell_books.last!, SpellBook)
75
+ # T.assert_type!(spell_books.last, T.nilable(SpellBook)) # TODO fix sig for 4.2 and 5.0
76
+ T.assert_type!(spell_books.first_n(5), T::Array[SpellBook])
77
+ T.assert_type!(spell_books.last_n(5), T::Array[SpellBook])
78
+ T.assert_type!(spell_books.find_by(name: 'Fantastic Beasts'), T.nilable(SpellBook))
79
+ T.assert_type!(spell_books.find_by!(name: 'Fantastic Beasts'), SpellBook)
80
+ T.assert_type!(spell_books.find_by_id(spell_book.id), T.nilable(SpellBook))
81
+ T.assert_type!(spell_books.find_by_id!(spell_book.id), SpellBook)
82
+ # CollectionProxy query also typed correctly!
83
+ T.assert_type!(spell_books.where(id: 1), SpellBook::ActiveRecord_AssociationRelation)
84
+ T.assert_type!(spell_books.preload(:wizard), SpellBook::ActiveRecord_AssociationRelation)
85
+ T.assert_type!(spell_books.eager_load(:wizard), SpellBook::ActiveRecord_AssociationRelation)
86
+ T.assert_type!(spell_books.order(:id), SpellBook::ActiveRecord_AssociationRelation)
87
+ T.assert_type!(spell_books.where.not(id: 1), SpellBook::ActiveRecord_AssociationRelation)
88
+ T.assert_type!(spell_books.biology, SpellBook::ActiveRecord_AssociationRelation)
89
+
90
+ # finder methods -- AssociationRelation
91
+ spell_books_query = spell_books.where(id: 1)
92
+ T.assert_type!(spell_books_query.exists?(name: 'Fantastic Beasts'), T::Boolean)
93
+ T.assert_type!(spell_books_query.find(spell_book.id), SpellBook)
94
+ T.assert_type!(spell_books_query.first!, SpellBook)
95
+ # T.assert_type!(spell_books_query.first, T.nilable(SpellBook)) # TODO fix sig for 4.2 and 5.0
96
+ T.assert_type!(spell_books_query.last!, SpellBook)
97
+ # T.assert_type!(spell_books_query.last, T.nilable(SpellBook)) # TODO fix sig for 4.2 and 5.0
98
+ T.assert_type!(spell_books_query.first_n(5), T::Array[SpellBook])
99
+ T.assert_type!(spell_books_query.last_n(5), T::Array[SpellBook])
100
+ T.assert_type!(spell_books_query.find_by(name: 'Fantastic Beasts'), T.nilable(SpellBook))
101
+ T.assert_type!(spell_books_query.find_by!(name: 'Fantastic Beasts'), SpellBook)
102
+ T.assert_type!(spell_books_query.find_by_id(spell_book.id), T.nilable(SpellBook))
103
+ T.assert_type!(spell_books_query.find_by_id!(spell_book.id), SpellBook)
104
+ # Query chaining
105
+ T.assert_type!(spell_books_query.preload(:wizard), SpellBook::ActiveRecord_AssociationRelation)
106
+ T.assert_type!(spell_books_query.eager_load(:wizard), SpellBook::ActiveRecord_AssociationRelation)
107
+ T.assert_type!(spell_books_query.order(:id), SpellBook::ActiveRecord_AssociationRelation)
108
+ T.assert_type!(spell_books_query.where.not(id: 1), SpellBook::ActiveRecord_AssociationRelation)
109
+ T.assert_type!(spell_books_query.biology, SpellBook::ActiveRecord_AssociationRelation)
110
+
111
+ # Enumerable on activerecord relation
90
112
  T.assert_type!(Wizard.all.to_a, T::Array[Wizard])
91
113
  Wizard.all.each do |w|
92
114
  T.assert_type!(w, Wizard)
93
115
  end
94
116
  Wizard.all.map do |w|
95
- T.assert_type!(w, Wizard) # TODO this doesn't work on Rails 4.2 or 5.0
117
+ T.assert_type!(w, Wizard)
96
118
  end
97
119
  Wizard.all.to_a.map do |w|
98
120
  T.assert_type!(w, Wizard)
99
121
  end
100
122
 
123
+ # enum on association collection proxy
101
124
  T.assert_type!(wizard.spell_books.to_a, T::Array[SpellBook])
102
125
  wizard.spell_books.each do |sp|
103
126
  T.assert_type!(sp, SpellBook)
104
127
  end
105
128
  wizard.spell_books.map do |sp|
106
- T.assert_type!(sp, SpellBook) # TODO this doesn't work on Rails 4.2 or 5.0
129
+ T.assert_type!(sp, SpellBook)
107
130
  end
108
131
  wizard.spell_books.to_a.map do |sp|
109
- T.assert_type!(sp, SpellBook) # This works on Rails 4.2
132
+ T.assert_type!(sp, SpellBook)
133
+ end
134
+
135
+ # enum on association relation
136
+ T.assert_type!(wizard.spell_books.where(id: 1).to_a, T::Array[SpellBook])
137
+ wizard.spell_books.where(id: 1).each do |sp|
138
+ T.assert_type!(sp, SpellBook)
139
+ end
140
+ wizard.spell_books.where(id: 1).map do |sp|
141
+ T.assert_type!(sp, SpellBook)
142
+ end
143
+ wizard.spell_books.where(id: 1).to_a.map do |sp|
144
+ T.assert_type!(sp, SpellBook)
110
145
  end
111
146
 
112
147
  # Model columns
113
148
  T.assert_type!(wizard.id, Integer)
114
149
  T.assert_type!(wizard.id?, T::Boolean)
115
150
  T.assert_type!(wizard.notes, T.nilable(String))
116
- T.assert_type!(wizard.house, T.nilable(String))
117
151
 
118
152
  # Model enum
119
153
  T.assert_type!(wizard.Gryffindor?, T::Boolean)
154
+ T.assert_type!(wizard.house, T.nilable(String))
120
155
  T.assert_type!(Wizard.houses, T::Hash[T.any(String, Symbol), Integer])
156
+ T.assert_type!(spell_book.biology?, T::Boolean)
157
+ T.assert_type!(spell_book.book_type, String)
158
+ T.assert_type!(SpellBook.book_types, T::Hash[T.any(String, Symbol), Integer])
121
159
 
122
160
  # Mythical plugin
123
161
  T.assert_type!(Wand.mythicals, T::Array[Wand])
data/spec/rails_helper.rb CHANGED
@@ -22,7 +22,7 @@ rails_folder =
22
22
  when "6.0"
23
23
  "v6.0"
24
24
  else
25
- ENV["TEST_SRB_INIT"] ? "v5.2-no-sorbet" : "v5.2"
25
+ "v5.2"
26
26
  end
27
27
 
28
28
  TEST_DATA_FOLDER = "spec/test_data/#{rails_folder}"
data/spec/sorbet_spec.rb CHANGED
@@ -12,6 +12,7 @@ RSpec.describe 'sorbet' do
12
12
  SpellBook.create!(
13
13
  name: 'Fantastic Beasts',
14
14
  wizard: harry,
15
+ book_type: :biology,
15
16
  )
16
17
  end
17
18
  let!(:wand) do
@@ -23,13 +24,11 @@ RSpec.describe 'sorbet' do
23
24
  end
24
25
 
25
26
  before(:all) do
26
- if ENV['TEST_SRB_INIT']
27
- # only initialize sorbet once for all tests because it is slow
28
- stdout, stderr, status = Open3.capture3(
29
- {'SRB_YES' => '1'}, 'bundle', 'exec', 'srb', 'init',
30
- chdir: Rails.root.to_path,
31
- )
32
- end
27
+ # only initialize sorbet once for all tests because it is slow
28
+ stdout, stderr, status = Open3.capture3(
29
+ {'SRB_YES' => '1'}, 'bundle', 'exec', 'srb', 'init',
30
+ chdir: Rails.root.to_path,
31
+ )
33
32
 
34
33
  # run sorbet-rails rake tasks
35
34
  Rake::Task['rails_rbi:all'].invoke
@@ -41,8 +40,15 @@ RSpec.describe 'sorbet' do
41
40
  'bundle', 'exec', 'srb', 'rbi', 'hidden-definitions',
42
41
  chdir: Rails.root.to_path,
43
42
  )
44
- # TODO srb rbi hidden-definitions is not working with sorbet & Rails 6.0.0.rc2
45
- puts stderr, status
43
+ puts '--- srb rbi hidden-definitions ---'
44
+ puts stdout, stderr, status
45
+
46
+ stdout, stderr, status = Open3.capture3(
47
+ 'bundle', 'exec', 'srb', 'rbi', 'todo',
48
+ chdir: Rails.root.to_path,
49
+ )
50
+ puts '--- srb rbi todo ---'
51
+ puts stdout, stderr, status
46
52
  end
47
53
 
48
54
  it 'returns expected sorbet tc result' do
@@ -50,13 +56,9 @@ RSpec.describe 'sorbet' do
50
56
  'bundle', 'exec', 'srb', 'tc', '--typed-override=typed-override.yaml',
51
57
  chdir: Rails.root.to_path,
52
58
  )
53
- expect(stdout).to eql('')
54
- expect(status.exitstatus).to eql(1) # T.reveal_type is considered an error
55
59
  expected_file_path = 'expected_srb_tc_output.txt'
56
- # if ENV['SORBET_VERSION']
57
- # expected_file_path = File.join(ENV['SORBET_VERSION'], expected_file_path)
58
- # end
59
60
  expect_match_file(stderr, expected_file_path)
61
+ expect(stdout).to eql('')
60
62
  end
61
63
 
62
64
  it 'passes sorbet dynamic checks' do