docbrown/lib/data_update_scripts
Daniel Uber 6f84f4afe8
Validate profile field "website url" is in fact a url (don't generate local path links). (#14302)
* Validate website_url profile field is a url

related to issue #14300

May need a data update script to (fixup? remove?) invalid profiles
since not being able to save existing profiles will cause problems.

* Check that URI is a valid url

Require the scheme to be one of https or http, not something like
mailto:// or telnet:// (nobody would do that, but don't try and link
to it if they did).

* Rubocop fixup for validation rule

URI::regexp is obsolete and should not be used. Instead, use URI::DEFAULT_PARSER.make_regexp

Prefer %w[] literals for arrays of words

Prefer the new style validations `validates :column, format: value` to validates_format_of

* Permit empty website_url fields

The previous validation was rejecting nil, which was the default. This
caused a lot of user factory calls to fail (since users didn't need
website urls in the profiles during testing unless the test was about
the website url link).

* Use :url validation as suggested

* Update validation error message

The validate_url gem gives a more complete error message to the
user. Update the spec to expect this.

* Use url_field rather than text_field in profile form

https://apidock.com/rails/v6.1.3.1/ActionView/Helpers/FormHelper/url_field

* Add data update to either fixup or clear invalid website urls

Checking blazer there are about 2600 profiles with "invalid" website
urls, typically a hostname, sometimes a hostname + path component,
which should be fixed up.

Naively add https:// to the front of the url, check that a valid
scheme and host are present on the resulting url, and save.

If an invalid url is generated (specifically, if host or scheme are
nil), just set the website url (with the invalid link) to an empty
string.

It's possible we'd want to notify users affected by this, that was not
included in this pass.

* Skip validations for intentionally invalid test cases
2021-07-22 12:02:29 -05:00
..
20200226193303_backfill_column_for_broadcasts.rb Run BackfillColumnForBroadcasts only if the column still exists (#6508) 2020-03-09 15:38:34 +01:00
20200305201642_index_feed_content_to_elasticsearch.rb [deploy] Remove Elasticsearch from Index Worker Names (#7594) 2020-04-29 12:12:29 -05:00
20200313123108_index_users_to_elasticsearch.rb [deploy] Remove Elasticsearch from Index Worker Names (#7594) 2020-04-29 12:12:29 -05:00
20200324133751_update_tag_hotness_scores.rb Hotness Score for Tags Should Use Article positive_reactions_count (#6808) [deploy] 2020-03-31 09:04:20 -05:00
20200503134234_remove_github_issues.rb [deploy] Decouple GitHub authentication from fetching GitHub issues (#7660) 2020-05-04 16:17:16 -04:00
20200526181850_update_public_reaction_counts_again.rb [deploy] Rubocop: fix violations of Layout/LineLength (#9197) 2020-07-08 08:36:36 -05:00
20200530085153_backfill_broadcasts_timestamps.rb Add timestamps to broadcasts (#8181) 2020-06-01 18:11:38 +02:00
20200708163323_backfill_broadcastable_for_broadcasts.rb Hotfix: Fix Typo in backfill_broadcastable_type_for_broadcasts (#9292) [deploy] 2020-07-13 10:50:29 -06:00
20200715140848_backfill_user_registered_at.rb [MERGE AFTER INVITATION PR] Add registered_at data script (#9331) 2020-07-27 12:28:06 -04:00
20200723070918_update_articles_cached_entities.rb Rubocop: Move from OpenStruct to Struct in Organization (#9431) 2020-07-30 21:04:05 +07:00
20200810083831_remove_orphaned_ahoy_rows.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200813072205_remove_orphaned_display_ad_events.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200818103028_nullify_orphaned_by_article_html_variant_trials.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200818170410_remove_orphaned_poll_votes.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200818170433_remove_orphaned_poll_skips.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200818170505_remove_orphaned_poll_options.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200818170523_remove_orphaned_polls.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200820153340_insert_facebook_connect_broadcast_message.rb Bump rubocop from 1.17.0 to 1.18.0 (#14107) 2021-07-01 13:51:49 +02:00
20200821103125_nullify_orphaned_articles_by_organization.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200821103305_nullify_orphaned_collections_by_organization.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200821103405_remove_orphaned_credits_by_organization.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200821103718_remove_orphaned_display_ads_by_organization.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200821103834_remove_orphaned_listings_by_organization.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200822082229_remove_orphaned_notifications_by_organization.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200822083050_remove_orphaned_sponsorships_by_organization.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200825095512_nullify_orphaned_comments_by_article.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200825102635_remove_orphaned_notification_subscriptions_by_article.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200825102956_remove_orphaned_notifications_by_article.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200825103119_remove_orphaned_profile_pins_by_article.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200825103244_remove_orphaned_rating_votes_by_article.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200826075937_migrate_profile_field_groups.rb [deploy] Introduce ProfileFieldGroup model (#10007) 2020-08-28 10:51:33 +07:00
20200826092816_remove_orphaned_notes_by_user.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200826133748_nullify_orphaned_tweets_by_user.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200826140317_remove_orphaned_articles_by_user.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200826140754_remove_orphaned_collections_by_user.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200826140924_remove_orphaned_credits_by_user.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200826141015_remove_orphaned_github_repos_by_user.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200826141105_remove_orphaned_mentions_by_user.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200826141145_remove_orphaned_organization_memberships_by_user.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200826141447_nullify_orphaned_page_views_by_user.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200826141550_nullify_orphaned_rating_votes_by_user.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200826141652_remove_orphaned_reactions_by_user.rb Routine rubocop fixes (#10237) 2020-09-08 12:06:47 -04:00
20200901040521_create_profile_fields.rb [deploy] Add data update script for profile fields (#10119) 2020-09-02 09:54:04 +07:00
20200901085230_remove_draft_articles_with_duplicate_canonical_url.rb Abstract DatadogStatsClient to ForemStatsClient (#12304) 2021-01-27 11:25:44 -05:00
20200904141057_cleanup_articles_with_invalid_feed_source_url.rb [deploy] Remove draft articles with duplicate feed source URL and cleanup invalid data: take 2 (#10239) 2020-09-08 11:53:41 -05:00
20200910135958_remove_draft_articles_with_duplicate_user_id_title_body_markdown.rb Bug Fix:Update Remove Draft Articles Scripts to not use Squish (#11445) 2020-11-16 13:20:37 -06:00
20200910140109_cleanup_published_articles_with_duplicate_user_id_title_body_markdown.rb Remove Elasticsearch ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ (#13606) 2021-05-03 11:09:45 -04:00
20200916202343_backfill_co_author_ids_for_articles.rb Removes second_user_id and third_user_id From the Articles Table (#10383) [deploy] 2020-10-02 13:14:32 -06:00
20200917115821_backfill_listing_published_date.rb Showing date in listing tile (#10217) 2020-09-21 10:14:26 +02:00
20200917150808_nullify_orphaned_tags_by_mod_chat_channel_id.rb [deploy] Cleanup orphan data from tags and feedback_messages (#10367) 2020-09-29 10:12:40 -04:00
20200917150838_nullify_orphaned_feedback_messages_by_reporter_id.rb [deploy] Cleanup orphan data from tags and feedback_messages (#10367) 2020-09-29 10:12:40 -04:00
20200922065307_fix_dribbble_url_profile_field.rb [deploy] /profile/settings page rendering (Ridhwana/Michael) (#10733) 2020-10-20 09:18:13 -04:00
20200922072907_backfill_profile_skills_languages.rb [deploy] /profile/settings page rendering (Ridhwana/Michael) (#10733) 2020-10-20 09:18:13 -04:00
20201015190914_update_article_main_image_path.rb [deploy] Store Article's main_image path unprocessed (#10867) 2020-10-16 14:46:37 -04:00
20201019192035_backfill_registered_for_users.rb Data update Script: Backfill Created, but Unregistered Users (#10939) [deploy] 2020-10-20 08:47:11 -06:00
20201022161311_backfill_user_registrations_in_registrations_controller_path.rb Fix missing registration data change (#11008) 2020-10-22 19:21:03 -04:00
20201026155851_resave_to_bust_cache_for_imgproxy.rb Update bust_user to EdgeCache::BustUser (#12051) 2020-12-29 09:53:00 +01:00
20201030015634_make_tags_with_mods_supported.rb Automatically mark tag supported when adding mod (#11151) 2020-10-30 09:46:10 -04:00
20201118141822_gradual_article_cache_bust.rb Rubocop fixes (#11862) 2020-12-11 17:36:42 +03:00
20201120001727_populate_explicit_follow_points.rb Add implicit points to follows to improve feed relevancy (in all algorithms) (#11513) 2020-11-25 16:09:51 -05:00
20201130041949_remove_name_profile_field.rb Drop profile columns from user (#10707) 2020-12-03 08:14:38 +07:00
20201208151516_set_onboarding_profile_fields_for_existing_forems.rb Replace the "setup onboarding profile fields" temp rake task with a data update script (#11800) 2020-12-08 17:50:43 +02:00
20201209134953_touch_articles_with_capitalized_paths.rb Ensure Article's username method returns a downcased string (#11813) 2020-12-09 12:56:40 -06:00
20201217162454_cleanup_orphan_git_hub_repositories.rb Remove GitHub repositories when GitHub identity is removed (#11951) 2020-12-20 15:15:40 +01:00
20201223013903_set_proper_display_area_for_profile_fields.rb Fix profile field production display area functionality and remove SiteConfig.dev_to? hacks for better generalization (#12015) 2021-02-11 10:05:06 -05:00
20210107151449_remove_feeds_import_feature_flag.rb Remove RssReader (#12169) 2021-01-08 11:45:15 -05:00
20210108033107_remove_looking_for_work_profile_fields.rb Remove looking for work columns (#12173) 2021-01-11 11:22:39 +07:00
20210114174504_update_user_update_rate_limit_default.rb Create settings model for rate limits (#13381) 2021-04-20 11:29:22 +07:00
20210119060219_make_local_navigation_links_relative.rb Update NavigationLink handling (#12316) 2021-01-20 13:57:59 -05:00
20210119131811_replace_instances_of_banned_and_comment_banned.rb Rename banned and comment_banned roles (#12270) 2021-04-06 10:12:14 -05:00
20210209152726_add_fastly_http_purge_feature_flag.rb Fastly edge caching: use PURGE HTTP method instead of POST (#12627) 2021-02-17 13:34:37 -05:00
20210209185037_add_single_resource_role_to_tech_admins.rb Fix erroring data update script (#12628) 2021-02-09 11:16:44 -08:00
20210210124346_add_data_updates_scripts_feature_flag.rb Adds a feature flag for Data Update Scripts (#12641) 2021-02-10 18:22:27 +02:00
20210211164634_fix_profile_field_edge_cases.rb Fix edge cases in profile field UI migration (#12665) 2021-02-11 17:18:46 -05:00
20210329172336_remove_pro_roles.rb Remove pro role from users and database (#13176) 2021-03-31 09:34:10 -07:00
20210405152916_invoke_update_reading_list_document_trigger_on_articles.rb [Search 2.0] Optimize search reading list (#13275) 2021-04-12 16:40:40 +02:00
20210412183428_resave_all_comment_mentioned_messages.rb Rename comment-mentioned-user class added by Html::Parser (#13263) 2021-04-13 14:33:22 -07:00
20210412185444_resave_all_comment_mentioned_comments.rb Rename comment-mentioned-user class added by Html::Parser (#13263) 2021-04-13 14:33:22 -07:00
20210412185449_resave_all_comment_mentioned_articles.rb Rename comment-mentioned-user class added by Html::Parser (#13263) 2021-04-13 14:33:22 -07:00
20210503175027_move_summary_website_url_and_location_to_profile.rb Fix misnamed data update script (#13862) 2021-05-26 15:50:31 -05:00
20210503202046_remove_unused_data_update_scripts.rb Cleanup unused DataUpdateScripts (#13640) 2021-05-04 09:19:24 -04:00
20210506052235_remove_runtime_banner_feature_flag.rb Remove :runtime_banner feature flag (#13662) 2021-05-28 15:10:15 -06:00
20210512030719_mark_mascot_setting_dus_as_obsolete.rb Remove settings_mascots table (#13737) 2021-05-13 10:03:25 +07:00
20210512032437_remove_settings_data_update_scripts.rb Clean up SiteConfig (#13738) 2021-05-18 09:38:31 +07:00
20210518043957_remove_site_config_scripts.rb [Hotfix] Fix DataUpdateScripts::RemoveSiteConfigScripts script (#13824) 2021-05-21 16:34:21 +02:00
20210604104735_remove_email_addresses_scripts.rb Removing Settings::General.email_addresses (#13958) 2021-06-11 12:34:34 +03:00
20210622145212_backfill_forem_consumer_app_team_id.rb Make Consumer Apps dictate aasa results (#14015) 2021-06-24 08:36:11 -06:00
20210630034523_add_work_profile_field.rb Add 'Work' profile field (#14106) 2021-07-09 09:24:08 +07:00
20210630041322_migrate_data_to_work_field.rb Add 'Work' profile field (#14106) 2021-07-09 09:24:08 +07:00
20210630063635_drop_profile_fields_for_static_attributes.rb Drop profile fields for static attributes (#14109) 2021-07-01 14:30:40 -04:00
20210701134702_remove_notification_setting_migration_scripts.rb Use new UserSetting and UserNotificationSettings and Ignore Related User Table Fields (#14121) 2021-07-08 09:31:34 -05:00
20210712054300_remove_unused_profile_fields.rb Remove unused profile fields (#14206) 2021-07-16 09:45:12 -04:00
20210712162220_backfill_section_column_for_navigation_links.rb Static Sections for Site Navigation - Pt1 (#14213) 2021-07-14 11:01:56 -04:00
20210722135549_profile_website_url_format.rb Validate profile field "website url" is in fact a url (don't generate local path links). (#14302) 2021-07-22 12:02:29 -05:00