Commit 8b069d33fcb9025e4ce6925a0a11a7119a174393
1 parent
f89b6066
Exists in
master
and in
1 other branch
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.
Showing
6 changed files
with
65 additions
and
57 deletions
Show diff stats
.rubocop.yml
.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 | ... | ... |