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.
@@ -23,6 +23,9 @@ Style/IndentationConsistency: @@ -23,6 +23,9 @@ Style/IndentationConsistency:
23 # modifiers. 23 # modifiers.
24 EnforcedStyle: rails 24 EnforcedStyle: rails
25 25
  26 +Style/GuardClause:
  27 + MinBodyLength: 10
  28 +
26 Style/AccessModifierIndentation: 29 Style/AccessModifierIndentation:
27 EnforcedStyle: outdent 30 EnforcedStyle: outdent
28 31
.rubocop_todo.yml
@@ -75,11 +75,6 @@ Style/EachWithObject: @@ -75,11 +75,6 @@ Style/EachWithObject:
75 - 'app/models/notice_fingerprinter.rb' 75 - 'app/models/notice_fingerprinter.rb'
76 - 'lib/recurse.rb' 76 - 'lib/recurse.rb'
77 77
78 -# Offense count: 27  
79 -# Configuration parameters: MinBodyLength.  
80 -Style/GuardClause:  
81 - Enabled: false  
82 -  
83 # Offense count: 873 78 # Offense count: 873
84 # Cop supports --auto-correct. 79 # Cop supports --auto-correct.
85 # Configuration parameters: EnforcedStyle, SupportedStyles. 80 # Configuration parameters: EnforcedStyle, SupportedStyles.
app/controllers/application_controller.rb
@@ -23,10 +23,10 @@ protected @@ -23,10 +23,10 @@ protected
23 # Check if the current_user is admin or not and redirect to root url if not 23 # Check if the current_user is admin or not and redirect to root url if not
24 # 24 #
25 def require_admin! 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 end 30 end
31 31
32 def redirect_to_root 32 def redirect_to_root
app/controllers/apps_controller.rb
@@ -93,13 +93,16 @@ class AppsController < ApplicationController @@ -93,13 +93,16 @@ class AppsController < ApplicationController
93 protected 93 protected
94 94
95 def initialize_subclassed_notification_service 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 # set the app's notification service 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 end 106 end
104 end 107 end
105 108
@@ -112,32 +115,38 @@ protected @@ -112,32 +115,38 @@ protected
112 115
113 # email_at_notices is edited as a string, and stored as an array. 116 # email_at_notices is edited as a string, and stored as an array.
114 def parse_email_at_notices_or_set_default 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 end 132 end
127 end 133 end
128 134
129 def parse_notice_at_notices_or_set_default 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 end 150 end
142 end 151 end
143 152
app/models/app.rb
@@ -152,16 +152,17 @@ class App @@ -152,16 +152,17 @@ class App
152 152
153 # Copy app attributes from another app. 153 # Copy app attributes from another app.
154 def copy_attributes_from(app_id) 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 end 166 end
166 end 167 end
167 end 168 end
lib/overrides/hoptoad_notifier/hoptoad_notifier.rb
@@ -6,18 +6,18 @@ HoptoadNotifier.module_eval do @@ -6,18 +6,18 @@ HoptoadNotifier.module_eval do
6 class << self 6 class << self
7 private def send_notice(notice) 7 private def send_notice(notice)
8 # Log the error internally if we are not in a development environment. 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 end 21 end
22 end 22 end
23 end 23 end