Commit 8b069d33fcb9025e4ce6925a0a11a7119a174393

Authored by Laust Rud Jacobsen
1 parent f89b6066
Exists in master and in 1 other branch production

Rubocop: return early instead of wrapping in guard clause

Based on
https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals

This handles a few of the cases.
.rubocop.yml
... ... @@ -23,6 +23,9 @@ Style/IndentationConsistency:
23 23 # modifiers.
24 24 EnforcedStyle: rails
25 25  
  26 +Style/GuardClause:
  27 + MinBodyLength: 10
  28 +
26 29 Style/AccessModifierIndentation:
27 30 EnforcedStyle: outdent
28 31  
... ...
.rubocop_todo.yml
... ... @@ -75,11 +75,6 @@ Style/EachWithObject:
75 75 - 'app/models/notice_fingerprinter.rb'
76 76 - 'lib/recurse.rb'
77 77  
78   -# Offense count: 27
79   -# Configuration parameters: MinBodyLength.
80   -Style/GuardClause:
81   - Enabled: false
82   -
83 78 # Offense count: 873
84 79 # Cop supports --auto-correct.
85 80 # Configuration parameters: EnforcedStyle, SupportedStyles.
... ...
app/controllers/application_controller.rb
... ... @@ -23,10 +23,10 @@ protected
23 23 # Check if the current_user is admin or not and redirect to root url if not
24 24 #
25 25 def require_admin!
26   - unless user_signed_in? && current_user.admin?
27   - flash[:error] = "Sorry, you don't have permission to do that"
28   - redirect_to_root
29   - end
  26 + return if user_signed_in? && current_user.admin?
  27 +
  28 + flash[:error] = "Sorry, you don't have permission to do that"
  29 + redirect_to_root
30 30 end
31 31  
32 32 def redirect_to_root
... ...
app/controllers/apps_controller.rb
... ... @@ -93,13 +93,16 @@ class AppsController < ApplicationController
93 93 protected
94 94  
95 95 def initialize_subclassed_notification_service
  96 + notification_type = params[:app].
  97 + fetch(:notification_service_attributes, {}).
  98 + fetch(:type, nil)
  99 + return if notification_type.blank?
  100 +
96 101 # set the app's notification service
97   - if params[:app][:notification_service_attributes] && (notification_type = params[:app][:notification_service_attributes][:type])
98   - available_notification_classes = [NotificationService] + NotificationService.subclasses
99   - notification_class = available_notification_classes.detect { |c| c.name == notification_type }
100   - if notification_class.present?
101   - app.notification_service = notification_class.new(params[:app][:notification_service_attributes])
102   - end
  102 + available_notification_classes = [NotificationService] + NotificationService.subclasses
  103 + notification_class = available_notification_classes.detect { |c| c.name == notification_type }
  104 + if notification_class.present?
  105 + app.notification_service = notification_class.new(params[:app][:notification_service_attributes])
103 106 end
104 107 end
105 108  
... ... @@ -112,32 +115,38 @@ protected
112 115  
113 116 # email_at_notices is edited as a string, and stored as an array.
114 117 def parse_email_at_notices_or_set_default
115   - if params[:app] && (val = params[:app][:email_at_notices])
116   - # Sanitize negative values, split on comma,
117   - # strip, parse as integer, remove all '0's.
118   - # If empty, set as default and show an error message.
119   - email_at_notices = val.gsub(/-\d+/, "").split(",").map { |v| v.strip.to_i }.reject { |v| v == 0 }
120   - if email_at_notices.any?
121   - params[:app][:email_at_notices] = email_at_notices
122   - else
123   - default_array = params[:app][:email_at_notices] = Errbit::Config.email_at_notices
124   - flash[:error] = "Couldn't parse your notification frequency. Value was reset to default (#{default_array.join(', ')})."
125   - end
  118 + return if params[:app].blank?
  119 +
  120 + val = params[:app][:email_at_notices]
  121 + return if val.blank?
  122 +
  123 + # Sanitize negative values, split on comma,
  124 + # strip, parse as integer, remove all '0's.
  125 + # If empty, set as default and show an error message.
  126 + email_at_notices = val.gsub(/-\d+/, "").split(",").map { |v| v.strip.to_i }.reject { |v| v == 0 }
  127 + if email_at_notices.any?
  128 + params[:app][:email_at_notices] = email_at_notices
  129 + else
  130 + default_array = params[:app][:email_at_notices] = Errbit::Config.email_at_notices
  131 + flash[:error] = "Couldn't parse your notification frequency. Value was reset to default (#{default_array.join(', ')})."
126 132 end
127 133 end
128 134  
129 135 def parse_notice_at_notices_or_set_default
130   - if params[:app][:notification_service_attributes] && (val = params[:app][:notification_service_attributes][:notify_at_notices])
131   - # Sanitize negative values, split on comma,
132   - # strip, parse as integer, remove all '0's.
133   - # If empty, set as default and show an error message.
134   - notify_at_notices = val.gsub(/-\d+/, "").split(",").map { |v| v.strip.to_i }
135   - if notify_at_notices.any?
136   - params[:app][:notification_service_attributes][:notify_at_notices] = notify_at_notices
137   - else
138   - default_array = params[:app][:notification_service_attributes][:notify_at_notices] = Errbit::Config.notify_at_notices
139   - flash[:error] = "Couldn't parse your notification frequency. Value was reset to default (#{default_array.join(', ')})."
140   - end
  136 + return if params[:app][:notification_service_attributes].blank?
  137 +
  138 + val = params[:app][:notification_service_attributes][:notify_at_notices]
  139 + return if val.blank?
  140 +
  141 + # Sanitize negative values, split on comma,
  142 + # strip, parse as integer, remove all '0's.
  143 + # If empty, set as default and show an error message.
  144 + notify_at_notices = val.gsub(/-\d+/, "").split(",").map { |v| v.strip.to_i }
  145 + if notify_at_notices.any?
  146 + params[:app][:notification_service_attributes][:notify_at_notices] = notify_at_notices
  147 + else
  148 + default_array = params[:app][:notification_service_attributes][:notify_at_notices] = Errbit::Config.notify_at_notices
  149 + flash[:error] = "Couldn't parse your notification frequency. Value was reset to default (#{default_array.join(', ')})."
141 150 end
142 151 end
143 152  
... ...
app/models/app.rb
... ... @@ -152,16 +152,17 @@ class App
152 152  
153 153 # Copy app attributes from another app.
154 154 def copy_attributes_from(app_id)
155   - if (copy_app = App.where(_id: app_id).first)
156   - # Copy fields
157   - (copy_app.fields.keys - %w(_id name created_at updated_at)).each do |k|
158   - send("#{k}=", copy_app.send(k))
159   - end
160   - # Clone the embedded objects that can be changed via apps/edit (ignore errs & deploys, etc.)
161   - %w(watchers issue_tracker notification_service).each do |relation|
162   - if (obj = copy_app.send(relation))
163   - send("#{relation}=", obj.is_a?(Array) ? obj.map(&:clone) : obj.clone)
164   - end
  155 + copy_app = App.where(_id: app_id).first
  156 + return if copy_app.blank?
  157 +
  158 + # Copy fields
  159 + (copy_app.fields.keys - %w(_id name created_at updated_at)).each do |k|
  160 + send("#{k}=", copy_app.send(k))
  161 + end
  162 + # Clone the embedded objects that can be changed via apps/edit (ignore errs & deploys, etc.)
  163 + %w(watchers issue_tracker notification_service).each do |relation|
  164 + if (obj = copy_app.send(relation))
  165 + send("#{relation}=", obj.is_a?(Array) ? obj.map(&:clone) : obj.clone)
165 166 end
166 167 end
167 168 end
... ...
lib/overrides/hoptoad_notifier/hoptoad_notifier.rb
... ... @@ -6,18 +6,18 @@ HoptoadNotifier.module_eval do
6 6 class << self
7 7 private def send_notice(notice)
8 8 # Log the error internally if we are not in a development environment.
9   - if configuration.public?
10   - app = App.find_or_initialize_by(name: "Self.Errbit")
11   - app.github_repo = "errbit/errbit"
12   - app.save!
13   - notice.send("api_key=", app.api_key)
  9 + return unless configuration.public?
14 10  
15   - # Create notice internally.
16   - report = ErrorReport.new(notice.to_xml)
17   - report.generate_notice!
  11 + app = App.find_or_initialize_by(name: "Self.Errbit")
  12 + app.github_repo = "errbit/errbit"
  13 + app.save!
  14 + notice.send("api_key=", app.api_key)
18 15  
19   - logger.info "Internal error was logged to 'Self.Errbit' app."
20   - end
  16 + # Create notice internally.
  17 + report = ErrorReport.new(notice.to_xml)
  18 + report.generate_notice!
  19 +
  20 + logger.info "Internal error was logged to 'Self.Errbit' app."
21 21 end
22 22 end
23 23 end
... ...