[Corrective action] Ban `include ActionView::Helpers::UrlHelper`
Related to #340358 (closed).
Background
This issue is a corrective action for a recent production incident on CI/CD pipelines.
Problem
UrlHelper is meant for use in the view layer. Mixing that into a model, or even a presenter is arguably wrong (we shouldn't mix in a view layer concern into lower levels).
This is also bad because in most cases we probably only want link_to but including UrlHelper adds 40 methods into the included object:
[5] pry(main)> ActionView::Helpers::TagHelper.instance_methods.size + ActionView::Helpers::TagHelper.instance_methods.size
=> 40
Here are the current includes:
app/controllers/projects/mattermosts_controller.rb:  include ActionView::Helpers::AssetUrlHelper
app/helpers/environments_helper.rb:  include ActionView::Helpers::AssetUrlHelper
app/models/integrations/asana.rb:    include ActionView::Helpers::UrlHelper
app/models/integrations/bamboo.rb:    include ActionView::Helpers::UrlHelper
app/models/integrations/bugzilla.rb:    include ActionView::Helpers::UrlHelper
app/models/integrations/campfire.rb:    include ActionView::Helpers::UrlHelper
app/models/integrations/confluence.rb:    include ActionView::Helpers::UrlHelper
app/models/integrations/custom_issue_tracker.rb:    include ActionView::Helpers::UrlHelper
app/models/integrations/datadog.rb:    include ActionView::Helpers::UrlHelper
app/models/integrations/discord.rb:    include ActionView::Helpers::UrlHelper
app/models/integrations/ewm.rb:    include ActionView::Helpers::UrlHelper
app/models/integrations/external_wiki.rb:    include ActionView::Helpers::UrlHelper
app/models/integrations/flowdock.rb:    include ActionView::Helpers::UrlHelper
app/models/integrations/hangouts_chat.rb:    include ActionView::Helpers::UrlHelper
app/models/integrations/irker.rb:    include ActionView::Helpers::UrlHelper
app/models/integrations/jenkins.rb:    include ActionView::Helpers::UrlHelper
app/models/integrations/jira.rb:    include ActionView::Helpers::AssetUrlHelper
app/models/integrations/mattermost.rb:    include ActionView::Helpers::UrlHelper
app/models/integrations/pivotaltracker.rb:    include ActionView::Helpers::UrlHelper
app/models/integrations/redmine.rb:    include ActionView::Helpers::UrlHelper
app/models/integrations/webex_teams.rb:    include ActionView::Helpers::UrlHelper
app/models/integrations/youtrack.rb:    include ActionView::Helpers::UrlHelper
app/presenters/alert_management/alert_presenter.rb:    include ActionView::Helpers::UrlHelper
app/presenters/ci/pipeline_presenter.rb:    include ActionView::Helpers::UrlHelper
app/presenters/clusters/cluster_presenter.rb:    include ActionView::Helpers::UrlHelper
app/presenters/environment_presenter.rb:  include ActionView::Helpers::UrlHelper
app/presenters/gitlab/blame_presenter.rb:    include ActionView::Helpers::UrlHelper
app/presenters/group_clusterable_presenter.rb:  include ActionView::Helpers::UrlHelper
app/presenters/instance_clusterable_presenter.rb:  include ActionView::Helpers::UrlHelper
app/presenters/merge_request_presenter.rb:  include ActionView::Helpers::UrlHelper
app/presenters/project_clusterable_presenter.rb:  include ActionView::Helpers::UrlHelper
app/presenters/project_presenter.rb:  include ActionView::Helpers::UrlHelper
app/presenters/prometheus_alert_presenter.rb:  include ActionView::Helpers::UrlHelper
app/presenters/release_presenter.rb:  include ActionView::Helpers::UrlHelper
app/presenters/releases/evidence_presenter.rb:    include ActionView::Helpers::UrlHelper
ee/app/helpers/license_helper.rb:  include ActionView::Helpers::UrlHelper
ee/app/models/integrations/github.rb:    include ActionView::Helpers::UrlHelper
ee/app/presenters/merge_request_approver_presenter.rb:  include ActionView::Helpers::UrlHelper
ee/spec/features/markdown/metrics_spec.rb:  include MetricsDashboardUrlHelpers
ee/spec/helpers/ee/integrations_helper_spec.rb:      include ActionView::Helpers::AssetUrlHelper
ee/spec/helpers/ee/projects/security/configuration_helper_spec.rb:  include ActionView::Helpers::UrlHelper
ee/spec/lib/banzai/filter/cross_project_issuable_information_filter_spec.rb:  include ActionView::Helpers::UrlHelper
ee/spec/lib/banzai/filter/issuable_state_filter_spec.rb:  include ActionView::Helpers::UrlHelper
lib/gitlab/ci/badge/metadata.rb:      include ActionView::Helpers::UrlHelper
lib/gitlab/email/message/in_product_marketing/helper.rb:          include ActionView::Helpers::UrlHelper
spec/features/markdown/metrics_spec.rb:  include MetricsDashboardUrlHelpers
spec/helpers/merge_requests_helper_spec.rb:  include ActionView::Helpers::UrlHelper
spec/helpers/nav/top_nav_helper_spec.rb:  include ActionView::Helpers::UrlHelper
spec/helpers/notify_helper_spec.rb:  include ActionView::Helpers::UrlHelper
spec/lib/banzai/filter/issuable_state_filter_spec.rb:  include ActionView::Helpers::UrlHelper
spec/lib/banzai/filter/reference_redactor_filter_spec.rb:  include ActionView::Helpers::UrlHelper
spec/lib/banzai/reference_redactor_spec.rb:    include ActionView::Helpers::UrlHelper
Solution
Can we pass in a view_context to the relevant object so that we can use view_context.link_to ?
Edited  by Thong Kuah