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.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +7 -0
- data/.github/workflows/ci-master.yml +30 -0
- data/.github/workflows/ci.yml +26 -0
- data/.github/workflows/publish-gem.yml +17 -0
- data/CONTRIBUTING.md +1 -2
- data/Gemfile +5 -9
- data/README.md +44 -6
- data/Rakefile +13 -24
- data/lib/sorbet-rails/active_record_rbi_formatter.rb +18 -15
- data/lib/sorbet-rails/dependent_gem_rbis/activerecord.rbi +4 -0
- data/lib/sorbet-rails/dependent_gem_rbis/parlour.rbi +1896 -0
- data/lib/sorbet-rails/gem_plugins/aasm_plugin.rb +55 -0
- data/lib/sorbet-rails/gem_plugins/attr_json_plugin.rb +137 -0
- data/lib/sorbet-rails/gem_plugins/flag_shih_tzu_plugin.rb +201 -0
- data/lib/sorbet-rails/gem_plugins/kaminari_plugin.rb +20 -0
- data/lib/sorbet-rails/gem_plugins/money_rails_plugin.rb +76 -0
- data/lib/sorbet-rails/gem_plugins/shrine_plugin.rb +1 -1
- data/lib/sorbet-rails/job_rbi_formatter.rb +1 -1
- data/lib/sorbet-rails/model_column_utils.rb +1 -1
- data/lib/sorbet-rails/model_plugins/active_record_assoc.rb +1 -1
- data/lib/sorbet-rails/model_plugins/active_record_querying.rb +38 -1
- data/lib/sorbet-rails/model_plugins/active_record_serialized_attribute.rb +3 -2
- data/lib/sorbet-rails/model_plugins/base.rb +8 -1
- data/lib/sorbet-rails/model_plugins/custom_finder_methods.rb +1 -1
- data/lib/sorbet-rails/model_plugins/plugins.rb +12 -0
- data/lib/sorbet-rails/model_rbi_formatter.rb +7 -4
- data/lib/sorbet-rails/model_utils.rb +14 -7
- data/lib/sorbet-rails/rails_mixins/custom_finder_methods.rb +12 -0
- data/lib/sorbet-rails/railtie.rb +1 -1
- data/lib/sorbet-rails/routes_rbi_formatter.rb +8 -0
- data/lib/sorbet-rails/tasks/rails_rbi.rake +12 -8
- data/sorbet-rails.gemspec +3 -3
- data/spec/bin/run_all_specs.sh +3 -4
- data/spec/bin/run_spec.sh +4 -1
- data/spec/custom_finder_methods_spec.rb +23 -0
- data/spec/generators/rails-template.rb +3 -20
- data/spec/generators/sorbet_test_cases.rb +26 -4
- data/spec/rails_helper.rb +6 -10
- data/spec/rake_rails_rbi_models_spec.rb +11 -4
- data/spec/sorbet_spec.rb +5 -1
- data/spec/support/v5.2/Gemfile +1 -3
- data/spec/support/v5.2/Gemfile.lock +88 -81
- data/spec/support/v5.2/app/controllers/application_controller.rb +1 -1
- data/spec/support/v5.2/app/mailers/application_mailer.rb +1 -1
- data/spec/support/v5.2/app/mailers/daily_prophet_mailer.rb +1 -1
- data/spec/support/v5.2/app/mailers/hogwarts_acceptance_mailer.rb +1 -1
- data/spec/support/v5.2/app/models/spell_book.rb +1 -1
- data/spec/support/v5.2/app/models/wand.rb +1 -1
- data/spec/support/v5.2/app/models/wizard.rb +1 -1
- data/spec/support/v5.2/config/environments/development.rb +1 -1
- data/spec/support/v5.2/config/environments/production.rb +1 -1
- data/spec/support/v5.2/config/environments/test.rb +1 -1
- data/spec/support/v5.2/config/initializers/wrap_parameters.rb +1 -1
- data/spec/support/v5.2/config/routes.rb +1 -1
- data/spec/support/v5.2/sorbet_test_cases.rb +26 -4
- data/spec/support/v6.0/Gemfile +1 -1
- data/spec/support/v6.0/Gemfile.lock +103 -96
- data/spec/support/v6.0/app/mailers/application_mailer.rb +1 -1
- data/spec/support/v6.0/config/environments/development.rb +1 -1
- data/spec/support/v6.0/config/environments/test.rb +1 -1
- data/spec/support/v6.0/config/initializers/cookies_serializer.rb +1 -1
- data/spec/support/v6.0/config/initializers/sorbet_rails.rb +1 -1
- data/spec/support/v6.0/config/routes.rb +1 -1
- data/spec/support/v6.0/sorbet_test_cases.rb +26 -4
- data/spec/support/{v5.1 → v6.1}/.gitignore +13 -2
- data/spec/support/{v5.1 → v6.1}/Gemfile +12 -15
- data/spec/support/v6.1/Gemfile.lock +203 -0
- data/spec/support/{v5.0 → v6.1}/README.md +0 -0
- data/spec/support/{v5.0 → v6.1}/Rakefile +0 -0
- data/spec/support/{v5.0 → v6.1}/app/assets/config/manifest.js +0 -0
- data/spec/support/{v5.0 → v6.1}/app/assets/images/.keep +0 -0
- data/spec/support/{v5.1 → v6.1}/app/assets/stylesheets/application.css +0 -0
- data/spec/support/{v5.0 → v6.1}/app/controllers/application_controller.rb +1 -2
- data/spec/support/{v5.0 → v6.1}/app/controllers/concerns/.keep +0 -0
- data/spec/support/{v5.0 → v6.1}/app/helpers/application_helper.rb +0 -0
- data/spec/support/{v5.0 → v6.1}/app/helpers/bar_helper.rb +0 -0
- data/spec/support/{v5.0 → v6.1}/app/helpers/baz_helper.rb +0 -0
- data/spec/support/{v5.0 → v6.1}/app/helpers/foo_helper.rb +0 -0
- data/spec/support/v6.1/app/jobs/application_job.rb +8 -0
- data/spec/support/{v5.0 → v6.1}/app/jobs/award_house_point_hourglasses.rb +0 -0
- data/spec/support/{v5.1 → v6.1}/app/mailers/application_mailer.rb +1 -1
- data/spec/support/{v5.0 → v6.1}/app/mailers/daily_prophet_mailer.rb +0 -0
- data/spec/support/{v5.0 → v6.1}/app/mailers/hogwarts_acceptance_mailer.rb +0 -0
- data/spec/support/{v5.0 → v6.1}/app/models/application_record.rb +0 -0
- data/spec/support/{v5.0 → v6.1}/app/models/concerns/.keep +0 -0
- data/spec/support/{v5.0 → v6.1}/app/models/concerns/mythical.rb +0 -0
- data/spec/support/{v5.1 → v6.1}/app/models/headmaster.rb +1 -1
- data/spec/support/{v5.1 → v6.1}/app/models/potion.rb +0 -0
- data/spec/support/{v5.1 → v6.1}/app/models/robe.rb +0 -0
- data/spec/support/{v5.0 → v6.1}/app/models/school.rb +1 -1
- data/spec/support/{v5.1 → v6.1}/app/models/spell.rb +0 -0
- data/spec/support/{v5.0 → v6.1}/app/models/spell_book.rb +0 -0
- data/spec/support/{v5.0 → v6.1}/app/models/squib.rb +0 -0
- data/spec/support/{v5.1 → v6.1}/app/models/subject.rb +0 -0
- data/spec/support/{v5.0 → v6.1}/app/models/wand.rb +0 -0
- data/spec/support/{v5.0 → v6.1}/app/models/wizard.rb +2 -1
- data/spec/support/{v5.1 → v6.1}/app/views/layouts/application.html.erb +2 -1
- data/spec/support/{v5.0 → v6.1}/app/views/layouts/mailer.html.erb +0 -0
- data/spec/support/{v5.0 → v6.1}/app/views/layouts/mailer.text.erb +0 -0
- data/spec/support/v6.1/bin/bundle +114 -0
- data/spec/support/{v5.0 → v6.1}/bin/rails +0 -0
- data/spec/support/{v5.0 → v6.1}/bin/rake +0 -0
- data/spec/support/{v5.1 → v6.1}/bin/setup +6 -11
- data/spec/support/{v5.1 → v6.1}/config/application.rb +8 -4
- data/spec/support/{v5.0 → v6.1}/config/boot.rb +0 -0
- data/spec/support/{v5.1 → v6.1}/config/database.yml +1 -1
- data/spec/support/{v5.0 → v6.1}/config/environment.rb +0 -0
- data/spec/support/{v5.1 → v6.1}/config/environments/development.rb +12 -4
- data/spec/support/{v5.1 → v6.1}/config/environments/production.rb +29 -7
- data/spec/support/{v5.1 → v6.1}/config/environments/test.rb +13 -7
- data/spec/support/{v5.0 → v6.1}/config/initializers/application_controller_renderer.rb +0 -0
- data/spec/support/{v5.0 → v6.1}/config/initializers/backtrace_silencers.rb +0 -0
- data/spec/support/v6.1/config/initializers/content_security_policy.rb +29 -0
- data/spec/support/{v5.1 → v6.1}/config/initializers/cookies_serializer.rb +1 -1
- data/spec/support/{v5.0 → v6.1}/config/initializers/filter_parameter_logging.rb +0 -0
- data/spec/support/{v5.0 → v6.1}/config/initializers/inflections.rb +0 -0
- data/spec/support/{v5.0 → v6.1}/config/initializers/mime_types.rb +0 -0
- data/spec/support/{v5.0 → v6.1}/config/initializers/sorbet_rails.rb +1 -1
- data/spec/support/{v5.0 → v6.1}/config/initializers/wrap_parameters.rb +1 -1
- data/spec/support/{v5.1 → v6.1}/config/locales/en.yml +1 -1
- data/spec/support/{v5.1 → v6.1}/config/puma.rb +8 -26
- data/spec/support/v6.1/config/routes.rb +5 -0
- data/spec/support/v6.1/config/storage.yml +34 -0
- data/spec/support/{v5.0 → v6.1}/config.ru +0 -0
- data/spec/support/{v5.1 → v6.1}/db/migrate/20190620000001_create_wizards.rb +2 -2
- data/spec/support/{v5.1 → v6.1}/db/migrate/20190620000002_create_wands.rb +2 -2
- data/spec/support/{v5.1 → v6.1}/db/migrate/20190620000003_create_spell_books.rb +2 -2
- data/spec/support/{v5.1 → v6.1}/db/migrate/20190620000004_add_more_column_types_to_wands.rb +2 -2
- data/spec/support/v6.1/db/migrate/20190620000005_add_broom_to_wizard.rb +6 -0
- data/spec/support/{v5.1 → v6.1}/db/migrate/20190620000006_add_more_enums_to_wizard.rb +2 -2
- data/spec/support/{v5.1 → v6.1}/db/migrate/20190620000007_add_type_to_wizard.rb +2 -2
- data/spec/support/{v5.1 → v6.1}/db/migrate/20190620000008_add_robe_to_wizard.rb +2 -2
- data/spec/support/{v5.1 → v6.1}/db/migrate/20190620000009_add_school.rb +2 -2
- data/spec/support/{v5.1 → v6.1}/db/migrate/20190620000010_add_subject.rb +2 -2
- data/spec/support/{v5.1 → v6.1}/db/migrate/20190620000011_add_subjects_wizards.rb +2 -2
- data/spec/support/{v5.1 → v6.1}/db/migrate/20190620000012_add_spell.rb +2 -2
- data/spec/support/{v5.1 → v6.1}/db/migrate/20190620000013_add_spells_spell_books.rb +2 -2
- data/spec/support/{v5.0 → v6.1}/db/migrate/20190620000014_create_headmasters.rb +2 -2
- data/spec/support/{v5.0 → v6.1}/db/migrate/20190620000015_add_serialized_to_wizards.rb +2 -2
- data/spec/support/{v5.1 → v6.1}/db/schema.rb +14 -11
- data/spec/support/{v5.0 → v6.1}/db/seeds.rb +0 -0
- data/spec/support/{v5.0 → v6.1}/lib/assets/.keep +0 -0
- data/spec/support/{v5.0 → v6.1}/lib/mythical_rbi_plugin.rb +0 -0
- data/spec/support/{v5.0 → v6.1}/lib/tasks/.keep +0 -0
- data/spec/support/{v5.0 → v6.1}/log/.keep +0 -0
- data/spec/support/{v5.0 → v6.1}/sorbet_test_cases.rb +29 -4
- data/spec/support/{v5.0/tmp → v6.1/storage}/.keep +0 -0
- data/spec/support/{v5.0/vendor/assets/stylesheets → v6.1/tmp}/.keep +0 -0
- data/spec/support/{v5.1/app/assets/images → v6.1/tmp/pids}/.keep +0 -0
- data/spec/support/{v5.1/app/controllers/concerns → v6.1/vendor}/.keep +0 -0
- data/spec/test_data/v5.2/expected_active_record_base.rbi +10 -10
- data/spec/test_data/v5.2/expected_active_record_relation.rbi +12 -13
- data/spec/test_data/v5.2/expected_attachment.rbi +16 -10
- data/spec/test_data/v5.2/expected_blob.rbi +16 -10
- data/spec/test_data/v5.2/expected_habtm_subjects.rbi +3 -3
- data/spec/test_data/v5.2/expected_habtm_wizards.rbi +3 -3
- data/spec/test_data/v5.2/expected_headmaster.rbi +16 -10
- data/spec/test_data/v5.2/expected_internal_metadata.rbi +16 -10
- data/spec/test_data/v5.2/expected_potion.rbi +16 -10
- data/spec/test_data/v5.2/expected_robe.rbi +16 -10
- data/spec/test_data/v5.2/expected_routes.rbi +8 -0
- data/spec/test_data/v5.2/expected_schema_migration.rbi +16 -10
- data/spec/test_data/v5.2/expected_school.rbi +16 -10
- data/spec/test_data/v5.2/expected_spell/habtm_spell_books.rbi +16 -10
- data/spec/test_data/v5.2/expected_spell.rbi +16 -10
- data/spec/test_data/v5.2/expected_spell_book/habtm_spell_books.rbi +3 -3
- data/spec/test_data/v5.2/expected_spell_book/habtm_spells.rbi +16 -10
- data/spec/test_data/v5.2/expected_spell_book.rbi +16 -10
- data/spec/test_data/v5.2/expected_squib.rbi +18 -12
- data/spec/test_data/v5.2/expected_subject/habtm_wizards.rbi +16 -10
- data/spec/test_data/v5.2/expected_subject.rbi +16 -10
- data/spec/test_data/v5.2/expected_wand.rbi +16 -10
- data/spec/test_data/v5.2/expected_wizard/habtm_subjects.rbi +16 -10
- data/spec/test_data/v5.2/expected_wizard.rbi +18 -12
- data/spec/test_data/v5.2/expected_wizard_wo_spellbook.rbi +21 -15
- data/spec/test_data/v6.0/expected_active_record_base.rbi +10 -10
- data/spec/test_data/v6.0/expected_active_record_relation.rbi +12 -13
- data/spec/test_data/v6.0/expected_attachment.rbi +16 -10
- data/spec/test_data/v6.0/expected_blob.rbi +16 -10
- data/spec/test_data/v6.0/expected_habtm_subjects.rbi +3 -3
- data/spec/test_data/v6.0/expected_habtm_wizards.rbi +3 -3
- data/spec/test_data/v6.0/expected_headmaster.rbi +16 -10
- data/spec/test_data/v6.0/expected_internal_metadata.rbi +16 -10
- data/spec/test_data/v6.0/expected_potion.rbi +16 -10
- data/spec/test_data/v6.0/expected_robe.rbi +16 -10
- data/spec/test_data/v6.0/expected_routes.rbi +8 -0
- data/spec/test_data/v6.0/expected_schema_migration.rbi +16 -10
- data/spec/test_data/v6.0/expected_school.rbi +16 -10
- data/spec/test_data/v6.0/expected_spell/habtm_spell_books.rbi +16 -10
- data/spec/test_data/v6.0/expected_spell.rbi +16 -10
- data/spec/test_data/v6.0/expected_spell_book/habtm_spell_books.rbi +3 -3
- data/spec/test_data/v6.0/expected_spell_book/habtm_spells.rbi +16 -10
- data/spec/test_data/v6.0/expected_spell_book.rbi +16 -10
- data/spec/test_data/v6.0/expected_squib.rbi +18 -12
- data/spec/test_data/v6.0/expected_subject/habtm_wizards.rbi +16 -10
- data/spec/test_data/v6.0/expected_subject.rbi +16 -10
- data/spec/test_data/v6.0/expected_wand.rbi +16 -10
- data/spec/test_data/v6.0/expected_wizard/habtm_subjects.rbi +16 -10
- data/spec/test_data/v6.0/expected_wizard.rbi +18 -12
- data/spec/test_data/v6.0/expected_wizard_wo_spellbook.rbi +21 -15
- data/spec/test_data/{v5.1 → v6.1}/expected_active_record_base.rbi +16 -16
- data/spec/test_data/{v5.1 → v6.1}/expected_active_record_relation.rbi +28 -32
- data/spec/test_data/{v5.0 → v6.1}/expected_application_job.rbi +0 -0
- data/spec/test_data/{v5.0 → v6.1}/expected_application_mailer.rbi +0 -0
- data/spec/test_data/v6.1/expected_attachment.rbi +340 -0
- data/spec/test_data/{v5.0 → v6.1}/expected_award_house_point_hourglasses.rbi +0 -0
- data/spec/test_data/v6.1/expected_blob.rbi +388 -0
- data/spec/test_data/{v5.0 → v6.1}/expected_custom_application_job.rbi +0 -0
- data/spec/test_data/{v5.0 → v6.1}/expected_custom_application_mailer.rbi +0 -0
- data/spec/test_data/{v5.0 → v6.1}/expected_custom_award_house_point_hourglasses.rbi +0 -0
- data/spec/test_data/{v5.0 → v6.1}/expected_custom_daily_prophet_mailer.rbi +0 -0
- data/spec/test_data/{v5.0 → v6.1}/expected_custom_hogwarts_acceptance_mailer.rbi +0 -0
- data/spec/test_data/{v5.0 → v6.1}/expected_daily_prophet_mailer.rbi +0 -0
- data/spec/test_data/{v5.1 → v6.1}/expected_habtm_subjects.rbi +51 -3
- data/spec/test_data/{v5.1 → v6.1}/expected_habtm_wizards.rbi +51 -3
- data/spec/test_data/{v5.1 → v6.1}/expected_headmaster.rbi +42 -6
- data/spec/test_data/{v5.0 → v6.1}/expected_helpers.rbi +0 -0
- data/spec/test_data/{v5.0 → v6.1}/expected_helpers_with_application_and_devise_helpers.rbi +0 -0
- data/spec/test_data/{v5.0 → v6.1}/expected_hogwarts_acceptance_mailer.rbi +0 -0
- data/spec/test_data/{v5.1 → v6.1}/expected_internal_metadata.rbi +42 -6
- data/spec/test_data/{v5.0 → v6.1}/expected_no_routes.rbi +0 -0
- data/spec/test_data/{v5.1 → v6.1}/expected_potion.rbi +42 -6
- data/spec/test_data/v6.1/expected_record.rbi +301 -0
- data/spec/test_data/{v5.1 → v6.1}/expected_robe.rbi +42 -6
- data/spec/test_data/v6.1/expected_routes.rbi +175 -0
- data/spec/test_data/{v5.1 → v6.1}/expected_schema_migration.rbi +42 -6
- data/spec/test_data/{v5.1 → v6.1}/expected_school.rbi +42 -6
- data/spec/test_data/{v5.1 → v6.1}/expected_spell/habtm_spell_books.rbi +42 -6
- data/spec/test_data/{v5.1 → v6.1}/expected_spell.rbi +42 -6
- data/spec/test_data/{v5.1 → v6.1}/expected_spell_book/habtm_spell_books.rbi +51 -3
- data/spec/test_data/{v5.1 → v6.1}/expected_spell_book/habtm_spells.rbi +42 -6
- data/spec/test_data/{v5.1 → v6.1}/expected_spell_book.rbi +78 -6
- data/spec/test_data/{v5.1 → v6.1}/expected_squib.rbi +514 -64
- data/spec/test_data/{v5.0 → v6.1}/expected_srb_tc_output.txt +0 -0
- data/spec/test_data/{v5.1 → v6.1}/expected_subject/habtm_wizards.rbi +42 -6
- data/spec/test_data/{v5.1 → v6.1}/expected_subject.rbi +42 -6
- data/spec/test_data/v6.1/expected_variant_record.rbi +376 -0
- data/spec/test_data/{v5.1 → v6.1}/expected_wand.rbi +108 -6
- data/spec/test_data/{v5.1 → v6.1}/expected_wizard/habtm_subjects.rbi +42 -6
- data/spec/test_data/{v5.1 → v6.1}/expected_wizard.rbi +514 -64
- data/spec/test_data/{v5.1 → v6.1}/expected_wizard_wo_spellbook.rbi +508 -58
- metadata +271 -503
- data/.travis.yml +0 -42
- data/lib/sorbet-rails/type_assert/actionpack.rbi +0 -4
- data/spec/support/v5.0/.gitignore +0 -21
- data/spec/support/v5.0/Gemfile +0 -37
- data/spec/support/v5.0/Gemfile.lock +0 -158
- data/spec/support/v5.0/app/assets/stylesheets/application.css +0 -15
- data/spec/support/v5.0/app/jobs/application_job.rb +0 -3
- data/spec/support/v5.0/app/mailers/application_mailer.rb +0 -5
- data/spec/support/v5.0/app/models/headmaster.rb +0 -8
- data/spec/support/v5.0/app/models/potion.rb +0 -6
- data/spec/support/v5.0/app/models/robe.rb +0 -4
- data/spec/support/v5.0/app/models/spell.rb +0 -5
- data/spec/support/v5.0/app/models/subject.rb +0 -5
- data/spec/support/v5.0/app/views/layouts/application.html.erb +0 -13
- data/spec/support/v5.0/bin/bundle +0 -3
- data/spec/support/v5.0/bin/setup +0 -34
- data/spec/support/v5.0/bin/update +0 -29
- data/spec/support/v5.0/config/application.rb +0 -27
- data/spec/support/v5.0/config/database.yml +0 -25
- data/spec/support/v5.0/config/environments/development.rb +0 -48
- data/spec/support/v5.0/config/environments/production.rb +0 -75
- data/spec/support/v5.0/config/environments/test.rb +0 -43
- data/spec/support/v5.0/config/initializers/cookies_serializer.rb +0 -6
- data/spec/support/v5.0/config/initializers/new_framework_defaults.rb +0 -27
- data/spec/support/v5.0/config/initializers/session_store.rb +0 -4
- data/spec/support/v5.0/config/locales/en.yml +0 -23
- data/spec/support/v5.0/config/puma.rb +0 -48
- data/spec/support/v5.0/config/routes.rb +0 -5
- data/spec/support/v5.0/db/migrate/20190620000001_create_wizards.rb +0 -14
- data/spec/support/v5.0/db/migrate/20190620000002_create_wands.rb +0 -12
- data/spec/support/v5.0/db/migrate/20190620000003_create_spell_books.rb +0 -10
- data/spec/support/v5.0/db/migrate/20190620000004_add_more_column_types_to_wands.rb +0 -17
- data/spec/support/v5.0/db/migrate/20190620000005_add_broom_to_wizard.rb +0 -6
- data/spec/support/v5.0/db/migrate/20190620000006_add_more_enums_to_wizard.rb +0 -9
- data/spec/support/v5.0/db/migrate/20190620000007_add_type_to_wizard.rb +0 -6
- data/spec/support/v5.0/db/migrate/20190620000008_add_robe_to_wizard.rb +0 -8
- data/spec/support/v5.0/db/migrate/20190620000009_add_school.rb +0 -10
- data/spec/support/v5.0/db/migrate/20190620000010_add_subject.rb +0 -8
- data/spec/support/v5.0/db/migrate/20190620000011_add_subjects_wizards.rb +0 -8
- data/spec/support/v5.0/db/migrate/20190620000012_add_spell.rb +0 -8
- data/spec/support/v5.0/db/migrate/20190620000013_add_spells_spell_books.rb +0 -8
- data/spec/support/v5.0/db/schema.rb +0 -96
- data/spec/support/v5.0/public/robots.txt +0 -5
- data/spec/support/v5.1/Gemfile.lock +0 -165
- data/spec/support/v5.1/README.md +0 -24
- data/spec/support/v5.1/Rakefile +0 -6
- data/spec/support/v5.1/app/assets/config/manifest.js +0 -2
- data/spec/support/v5.1/app/controllers/application_controller.rb +0 -4
- data/spec/support/v5.1/app/helpers/application_helper.rb +0 -3
- data/spec/support/v5.1/app/helpers/bar_helper.rb +0 -3
- data/spec/support/v5.1/app/helpers/baz_helper.rb +0 -3
- data/spec/support/v5.1/app/helpers/foo_helper.rb +0 -3
- data/spec/support/v5.1/app/jobs/application_job.rb +0 -3
- data/spec/support/v5.1/app/jobs/award_house_point_hourglasses.rb +0 -12
- data/spec/support/v5.1/app/mailers/daily_prophet_mailer.rb +0 -9
- data/spec/support/v5.1/app/mailers/hogwarts_acceptance_mailer.rb +0 -29
- data/spec/support/v5.1/app/models/application_record.rb +0 -4
- data/spec/support/v5.1/app/models/concerns/.keep +0 -0
- data/spec/support/v5.1/app/models/concerns/mythical.rb +0 -11
- data/spec/support/v5.1/app/models/school.rb +0 -5
- data/spec/support/v5.1/app/models/spell_book.rb +0 -18
- data/spec/support/v5.1/app/models/squib.rb +0 -6
- data/spec/support/v5.1/app/models/wand.rb +0 -19
- data/spec/support/v5.1/app/models/wizard.rb +0 -65
- data/spec/support/v5.1/app/views/layouts/mailer.html.erb +0 -13
- data/spec/support/v5.1/app/views/layouts/mailer.text.erb +0 -1
- data/spec/support/v5.1/bin/bundle +0 -3
- data/spec/support/v5.1/bin/rails +0 -4
- data/spec/support/v5.1/bin/rake +0 -4
- data/spec/support/v5.1/bin/update +0 -29
- data/spec/support/v5.1/bin/yarn +0 -11
- data/spec/support/v5.1/config/boot.rb +0 -4
- data/spec/support/v5.1/config/environment.rb +0 -6
- data/spec/support/v5.1/config/initializers/application_controller_renderer.rb +0 -9
- data/spec/support/v5.1/config/initializers/backtrace_silencers.rb +0 -8
- data/spec/support/v5.1/config/initializers/filter_parameter_logging.rb +0 -5
- data/spec/support/v5.1/config/initializers/inflections.rb +0 -17
- data/spec/support/v5.1/config/initializers/mime_types.rb +0 -5
- data/spec/support/v5.1/config/initializers/sorbet_rails.rb +0 -3
- data/spec/support/v5.1/config/initializers/wrap_parameters.rb +0 -15
- data/spec/support/v5.1/config/routes.rb +0 -5
- data/spec/support/v5.1/config.ru +0 -5
- data/spec/support/v5.1/db/migrate/20190620000005_add_broom_to_wizard.rb +0 -6
- data/spec/support/v5.1/db/migrate/20190620000014_create_headmasters.rb +0 -9
- data/spec/support/v5.1/db/migrate/20190620000015_add_serialized_to_wizards.rb +0 -9
- data/spec/support/v5.1/db/seeds.rb +0 -8
- data/spec/support/v5.1/lib/assets/.keep +0 -0
- data/spec/support/v5.1/lib/mythical_rbi_plugin.rb +0 -16
- data/spec/support/v5.1/lib/tasks/.keep +0 -0
- data/spec/support/v5.1/log/.keep +0 -0
- data/spec/support/v5.1/package.json +0 -5
- data/spec/support/v5.1/public/robots.txt +0 -1
- data/spec/support/v5.1/sorbet_test_cases.rb +0 -409
- data/spec/support/v5.1/tmp/.keep +0 -0
- data/spec/support/v5.1/vendor/.keep +0 -0
- data/spec/test_data/v5.0/expected_active_record_base.rbi +0 -113
- data/spec/test_data/v5.0/expected_active_record_relation.rbi +0 -199
- data/spec/test_data/v5.0/expected_habtm_subjects.rbi +0 -660
- data/spec/test_data/v5.0/expected_habtm_wizards.rbi +0 -660
- data/spec/test_data/v5.0/expected_headmaster.rbi +0 -328
- data/spec/test_data/v5.0/expected_internal_metadata.rbi +0 -298
- data/spec/test_data/v5.0/expected_potion.rbi +0 -280
- data/spec/test_data/v5.0/expected_robe.rbi +0 -301
- data/spec/test_data/v5.0/expected_routes.rbi +0 -27
- data/spec/test_data/v5.0/expected_schema_migration.rbi +0 -271
- data/spec/test_data/v5.0/expected_school.rbi +0 -301
- data/spec/test_data/v5.0/expected_spell/habtm_spell_books.rbi +0 -319
- data/spec/test_data/v5.0/expected_spell.rbi +0 -292
- data/spec/test_data/v5.0/expected_spell_book/habtm_spell_books.rbi +0 -637
- data/spec/test_data/v5.0/expected_spell_book/habtm_spells.rbi +0 -319
- data/spec/test_data/v5.0/expected_spell_book.rbi +0 -415
- data/spec/test_data/v5.0/expected_squib.rbi +0 -832
- data/spec/test_data/v5.0/expected_subject/habtm_wizards.rbi +0 -319
- data/spec/test_data/v5.0/expected_subject.rbi +0 -292
- data/spec/test_data/v5.0/expected_wand.rbi +0 -497
- data/spec/test_data/v5.0/expected_wizard/habtm_subjects.rbi +0 -319
- data/spec/test_data/v5.0/expected_wizard.rbi +0 -908
- data/spec/test_data/v5.0/expected_wizard_wo_spellbook.rbi +0 -902
- data/spec/test_data/v5.1/expected_application_job.rbi +0 -20
- data/spec/test_data/v5.1/expected_application_mailer.rbi +0 -5
- data/spec/test_data/v5.1/expected_award_house_point_hourglasses.rbi +0 -20
- data/spec/test_data/v5.1/expected_custom_application_job.rbi +0 -21
- data/spec/test_data/v5.1/expected_custom_application_mailer.rbi +0 -6
- data/spec/test_data/v5.1/expected_custom_award_house_point_hourglasses.rbi +0 -21
- data/spec/test_data/v5.1/expected_custom_daily_prophet_mailer.rbi +0 -8
- data/spec/test_data/v5.1/expected_custom_hogwarts_acceptance_mailer.rbi +0 -21
- data/spec/test_data/v5.1/expected_daily_prophet_mailer.rbi +0 -7
- data/spec/test_data/v5.1/expected_helpers.rbi +0 -27
- data/spec/test_data/v5.1/expected_helpers_with_application_and_devise_helpers.rbi +0 -34
- data/spec/test_data/v5.1/expected_hogwarts_acceptance_mailer.rbi +0 -20
- data/spec/test_data/v5.1/expected_no_routes.rbi +0 -4
- data/spec/test_data/v5.1/expected_routes.rbi +0 -27
- 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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c85a4b2dec82b9ff5e78fd20ca40964639474ae84d03641f4d7a2f2ee7afe1ae
|
4
|
+
data.tar.gz: 62fd90904255f58f2c494a51c170077e347b0746b426717829514aa38df79b48
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d57f6492a27063b71f6f02d5731a6b4b05f97395f6ec61cfccf0af782544bd1bd0c9c8205338535dc4563c2be15f51745d03a52d51cd02e53d937c99fbba0b3
|
7
|
+
data.tar.gz: 8141acaf0b835f523b75f255a647e615017015aab6e40e2d50bd3ff5a523b74589583964553e1fbe6d959f3234722434757cb7aa9a68cc68381a1a5761b5a493
|
@@ -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", "~>
|
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://
|
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
|
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 [
|
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.
|
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.
|
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
|
-
|
43
|
-
|
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
|
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
|
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
|