docbrown/app/controllers
Jeremy Friesen 73ff4169e8
Removing instance variable and before action (#16954)
There is no reason to create an instance variable as we don't pass this
to the view.  Further, by adding this as a before_action there's a
disconnect in logic.

This commit attempts to address those issues.

What follows is a three-fold change:

1. Removing the before action (let's just call the method)
2. Reworking the method to reduce, just a bit, the method cost
3. Removing an unused instance variable

Here are the benchmarks.  Note the "follows_limit" as written below is
the "Proposed" route.

```ruby
require 'benchmark'

def follows_limit_original(params:, default: 80, max: 1000)
  per_page = (params[:per_page] || default).to_i
  @follows_limit = [per_page, max].min
end

def follows_limit(params:, default: 80, max: 1000)
  return default unless params.key?(:per_page)
  per_page = params[:per_page].to_i
  return max

  per_page
end

def follows_limit_alt(params:, default: 80, max: 1000)
  per_page = params.fetch(:per_page, default).to_i
  return max if per_page > max
  per_page
end

TIMES = 10_000
Benchmark.bmbm do |b|
  b.report("Original no params") { 1000.times { follows_limit_original(params: {}) } }
  b.report("Original less than max") { 1000.times { follows_limit_original(params: {per_page: 90 }) } }
  b.report("Original greater than max") { 1000.times { follows_limit_original(params: {per_page: 9000 }) } }
  b.report("Proposed no params") { 1000.times { follows_limit(params: {}) } }
  b.report("Proposed less than max") { 1000.times { follows_limit(params: {per_page: 90 }) } }
  b.report("Proposed greater than max") { 1000.times { follows_limit(params: {per_page: 9000 }) } }
  b.report("Alt no params") { 1000.times { follows_limit_alt(params: {}) } }
  b.report("Alt less than max") { 1000.times { follows_limit_alt(params: {per_page: 90 }) } }
  b.report("Alt greater than max") { 1000.times { follows_limit_alt(params: {per_page: 9000 }) } }
end
```

```shell
$ ruby /Users/jfriesen/git/forem/bench.rb
Rehearsal -------------------------------------------------------------
Original no params          0.000403   0.000002   0.000405 (  0.000405)
Original less than max      0.000109   0.000005   0.000114 (  0.000114)
Original greater than max   0.000161   0.000006   0.000167 (  0.000166)
Proposed no params          0.000076   0.000001   0.000077 (  0.000076)
Proposed less than max      0.000114   0.000009   0.000123 (  0.000126)
Proposed greater than max   0.000112   0.000011   0.000123 (  0.000123)
Alt no params               0.000104   0.000007   0.000111 (  0.000114)
Alt less than max           0.000113   0.000009   0.000122 (  0.000122)
Alt greater than max        0.000111   0.000001   0.000112 (  0.000115)
---------------------------------------------------- total: 0.001354sec

                                user     system      total        real
Original no params          0.000108   0.000000   0.000108 (  0.000110)
Original less than max      0.000109   0.000001   0.000110 (  0.000111)
Original greater than max   0.000109   0.000000   0.000109 (  0.000109)
Proposed no params          0.000071   0.000000   0.000071 (  0.000071)
Proposed less than max      0.000103   0.000001   0.000104 (  0.000103)
Proposed greater than max   0.000102   0.000000   0.000102 (  0.000103)
Alt no params               0.000093   0.000000   0.000093 (  0.000093)
Alt less than max           0.000103   0.000000   0.000103 (  0.000104)
Alt greater than max        0.000102   0.000000   0.000102 (  0.000103)
```
2022-03-22 12:57:57 -04:00
..
admin Penciling in a Default Spaces section (#16897) 2022-03-21 09:56:12 -04:00
api/v0 Ensuring POST api/v0/articles authorizes by policy (#16685) 2022-02-28 08:50:33 -05:00
concerns More listings refactoring (#16343) 2022-02-23 13:44:30 +07:00
incoming_webhooks Use new UserSetting and UserNotificationSettings and Ignore Related User Table Fields (#14121) 2021-07-08 09:31:34 -05:00
notifications Rubocop: fix additional violations in todo file (#9218) 2020-07-09 10:25:44 -04:00
stories Improve the UX of the SMTP Section (#16223) 2022-02-15 18:40:14 +02:00
users A suspended user returns 403 instead of 500 (#16408) 2022-02-04 09:42:23 -05:00
api_secrets_controller.rb Add a contact email address to the /admin/customization/config (#16497) 2022-02-15 17:37:08 +02:00
application_controller.rb Adding inline documentation (#16955) 2022-03-21 17:18:06 -04:00
application_metal_controller.rb Add ApplicationMetalController to relevant controllers (#4937) 2019-11-26 16:29:07 -05:00
article_approvals_controller.rb app/controllers & decorators i18n (#16126) 2022-02-03 13:35:56 -05:00
articles_controller.rb Fix RSS feed validity issue (#16418) (#16517) 2022-02-22 09:22:05 -06:00
async_info_controller.rb Fix NoMethodError on User#email (#16591) 2022-02-15 10:50:10 -05:00
badges_controller.rb Add badges index page. (#4236) 2019-10-06 17:34:52 -04:00
collections_controller.rb Series count to only include non empty series (#16130) 2022-01-18 10:22:34 +07:00
comments_controller.rb app/controllers & decorators i18n (#16126) 2022-02-03 13:35:56 -05:00
confirmations_controller.rb Add a contact email address to the /admin/customization/config (#16497) 2022-02-15 17:37:08 +02:00
credits_controller.rb app/controllers & decorators i18n (#16126) 2022-02-03 13:35:56 -05:00
dashboards_controller.rb Removing instance variable and before action (#16954) 2022-03-22 12:57:57 -04:00
deep_links_controller.rb Add exclusion to AASA supported paths (#14593) 2021-08-26 10:17:39 -06:00
devices_controller.rb app/controllers & decorators i18n (#16126) 2022-02-03 13:35:56 -05:00
discussion_locks_controller.rb app/controllers & decorators i18n (#16126) 2022-02-03 13:35:56 -05:00
display_ad_events_controller.rb Extracting constants and tidying tests (#15946) 2022-01-05 09:19:39 -05:00
email_authorizations_controller.rb Standardize ActiveRecord order clauses (#9395) 2020-07-20 10:00:51 -04:00
email_subscriptions_controller.rb app/controllers & decorators i18n (#16126) 2022-02-03 13:35:56 -05:00
feedback_messages_controller.rb app/controllers & decorators i18n (#16126) 2022-02-03 13:35:56 -05:00
followings_controller.rb Rubocop: move dot in multi-line calls to leading position (#9262) 2020-07-16 15:51:11 +02:00
follows_controller.rb app/controllers & decorators i18n (#16126) 2022-02-03 13:35:56 -05:00
ga_events_controller.rb Skip google analytics when ga_tracking_id is nil (#15967) 2022-01-06 12:21:07 -05:00
github_repos_controller.rb app/controllers & decorators i18n (#16126) 2022-02-03 13:35:56 -05:00
html_variant_successes_controller.rb Move HtmlVariantSuccessesCreate from job to inline (#5879) [deploy] 2020-02-04 10:24:39 -08:00
html_variant_trials_controller.rb Move HtmlVariantTrial#create inline (#5901) [deploy] 2020-02-04 17:29:46 -08:00
image_uploads_controller.rb app/controllers & decorators i18n (#16126) 2022-02-03 13:35:56 -05:00
invitations_controller.rb Part One: Fix Users Stuck in a "Created" but "Unregistered" State (#10882) 2020-10-19 16:51:31 -04:00
liquid_embeds_controller.rb Move work from template to controller (#16092) 2022-01-18 11:21:25 -05:00
liquid_tags_controller.rb Remove redundant freeze calls (#14596) 2021-08-26 10:01:08 -04:00
listings_controller.rb More listings refactoring (#16343) 2022-02-23 13:44:30 +07:00
moderations_controller.rb Refactoring questions asked of user (#15762) 2021-12-21 12:45:12 -05:00
notification_subscriptions_controller.rb Rename unidiomatic methods (#13328) 2021-04-09 10:59:56 -05:00
notifications_controller.rb Removing unused instance variable (#16826) 2022-03-08 13:59:08 -05:00
omniauth_callbacks_controller.rb app/controllers & decorators i18n (#16126) 2022-02-03 13:35:56 -05:00
onboardings_controller.rb Cache onboarding at edge (#6966) 2020-03-31 16:12:14 +02:00
open_search_controller.rb [deploy] Remove need for ENV vars during asset precompile (#10349) 2020-09-16 13:57:05 -04:00
organizations_controller.rb app/controllers & decorators i18n (#16126) 2022-02-03 13:35:56 -05:00
page_views_controller.rb Ensuring we don't track views of author or unpublished (#16143) 2022-01-18 11:23:18 -05:00
pages_controller.rb app/controllers & decorators i18n (#16126) 2022-02-03 13:35:56 -05:00
passwords_controller.rb Add a notification on password reset (#14968) 2021-10-07 14:48:01 -04:00
podcast_episodes_controller.rb Fix and clean up podcast pages (#15004) 2021-10-15 17:38:57 -04:00
podcasts_controller.rb app/controllers & decorators i18n (#16126) 2022-02-03 13:35:56 -05:00
poll_skips_controller.rb Use constants for Permitted params in controller (#14895) 2021-10-05 09:00:14 -04:00
poll_votes_controller.rb Use constants for Permitted params in controller (#14895) 2021-10-05 09:00:14 -04:00
pro_accounts_controller.rb Add basic pro accounts lander test (#3433) 2019-07-09 22:10:50 -04:00
profile_field_groups_controller.rb Add ProfileFieldGroupsController to API (#10124) 2020-09-03 10:12:53 +07:00
profile_pins_controller.rb app/controllers & decorators i18n (#16126) 2022-02-03 13:35:56 -05:00
profile_preview_cards_controller.rb Add JSON representation of Profile Preview Card info (#14296) 2021-07-21 16:23:54 +01:00
profiles_controller.rb app/controllers & decorators i18n (#16126) 2022-02-03 13:35:56 -05:00
rating_votes_controller.rb app/controllers & decorators i18n (#16126) 2022-02-03 13:35:56 -05:00
reactions_controller.rb Don't try to create invalid RatingVote (#14706) 2021-09-14 09:41:59 +07:00
reading_list_items_controller.rb [deploy] Fix Reading List Counter Without last_reacted_at Default (#10933) 2020-10-19 13:26:19 -05:00
registrations_controller.rb app/controllers & decorators i18n (#16126) 2022-02-03 13:35:56 -05:00
response_templates_controller.rb app/controllers & decorators i18n (#16126) 2022-02-03 13:35:56 -05:00
search_controller.rb Added "Tags" category to search results (#16265) 2022-01-26 20:51:15 +03:00
service_worker_controller.rb Revert "Revert "Removed service worker (#12974)" (#13014)" (#13015) 2021-03-17 10:57:56 -04:00
sidebars_controller.rb Refactoring to consolidate logic (#15851) 2021-12-29 11:08:04 -05:00
sitemaps_controller.rb Spelling (#15702) 2021-12-07 06:59:10 -07:00
social_previews_controller.rb Render social previews for tags with one of the two custom colors set (#16557) 2022-02-15 09:56:57 -06:00
stories_controller.rb Redirect appended /moderate and /admin to the same page (admin member view) (#16779) 2022-03-03 19:40:03 -05:00
stripe_active_cards_controller.rb app/controllers & decorators i18n (#16126) 2022-02-03 13:35:56 -05:00
tag_adjustments_controller.rb app/controllers & decorators i18n (#16126) 2022-02-03 13:35:56 -05:00
tags_controller.rb Add ability to bulk search tags by name or id (#16671) 2022-02-24 12:34:50 -05:00
user_blocks_controller.rb ✂✂✂ Remove Connect (#14734) 2021-11-18 08:21:00 -06:00
user_subscriptions_controller.rb UserSubscription backend refactor (#9060) 2020-07-02 12:08:37 -04:00
users_controller.rb Add a contact email address to the /admin/customization/config (#16497) 2022-02-15 17:37:08 +02:00
video_states_controller.rb app/controllers & decorators i18n (#16126) 2022-02-03 13:35:56 -05:00
videos_controller.rb Removing before_action in favor of explicity call (#16777) 2022-03-04 11:08:53 -05:00