diff --git a/.rubocop.yml b/.rubocop.yml index 88345373a5b63efc092c796d35b44dd0a73bb701..d30846e6e0ba43563927e402a348d75b4f0386a6 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -5,7 +5,7 @@ require: inherit_from: .rubocop_todo.yml AllCops: - TargetRubyVersion: 2.1 + TargetRubyVersion: 2.3 # Cop names are not d§splayed in offense messages by default. Change behavior # by overriding DisplayCopNames, or by giving the -D/--display-cop-names # option. diff --git a/app/controllers/projects/wikis_controller.rb b/app/controllers/projects/wikis_controller.rb index c3353446fd115718de5aa54fedb0ae2381c0a938..8e683931b2ef5949369cf976cc61fe5fc525fc3c 100644 --- a/app/controllers/projects/wikis_controller.rb +++ b/app/controllers/projects/wikis_controller.rb @@ -83,7 +83,7 @@ def history def destroy @page = @project_wiki.find_page(params[:id]) - @page.delete if @page + @page&.delete redirect_to( namespace_project_wiki_path(@project.namespace, @project, :home), diff --git a/app/mailers/notify.rb b/app/mailers/notify.rb index 0cd3456b4de90d139495760fa0b624c5f7fc460c..5b9226a6b81a51a69c6fbeb4b39e36d08284996c 100644 --- a/app/mailers/notify.rb +++ b/app/mailers/notify.rb @@ -151,7 +151,7 @@ def mail_answer_thread(model, headers = {}) headers['In-Reply-To'] = message_id(model) headers['References'] = message_id(model) - headers[:subject].prepend('Re: ') if headers[:subject] + headers[:subject]&.prepend('Re: ') mail_thread(model, headers) end diff --git a/app/models/application_setting.rb b/app/models/application_setting.rb index 9a4557524c4b0be542b35b28c208ee0627d66c32..74b358d8c40a08dce2ea8f9b545c67400624f491 100644 --- a/app/models/application_setting.rb +++ b/app/models/application_setting.rb @@ -116,31 +116,25 @@ class ApplicationSetting < ActiveRecord::Base numericality: { only_integer: true, greater_than_or_equal_to: 0 } validates_each :restricted_visibility_levels do |record, attr, value| - unless value.nil? - value.each do |level| - unless Gitlab::VisibilityLevel.options.has_value?(level) - record.errors.add(attr, "'#{level}' is not a valid visibility level") - end + value&.each do |level| + unless Gitlab::VisibilityLevel.options.has_value?(level) + record.errors.add(attr, "'#{level}' is not a valid visibility level") end end end validates_each :import_sources do |record, attr, value| - unless value.nil? - value.each do |source| - unless Gitlab::ImportSources.options.has_value?(source) - record.errors.add(attr, "'#{source}' is not a import source") - end + value&.each do |source| + unless Gitlab::ImportSources.options.has_value?(source) + record.errors.add(attr, "'#{source}' is not a import source") end end end validates_each :disabled_oauth_sign_in_sources do |record, attr, value| - unless value.nil? - value.each do |source| - unless Devise.omniauth_providers.include?(source.to_sym) - record.errors.add(attr, "'#{source}' is not an OAuth sign-in source") - end + value&.each do |source| + unless Devise.omniauth_providers.include?(source.to_sym) + record.errors.add(attr, "'#{source}' is not an OAuth sign-in source") end end end @@ -230,11 +224,11 @@ def sidekiq_throttling_column_exists? end def domain_whitelist_raw - self.domain_whitelist.join("\n") unless self.domain_whitelist.nil? + self.domain_whitelist&.join("\n") end def domain_blacklist_raw - self.domain_blacklist.join("\n") unless self.domain_blacklist.nil? + self.domain_blacklist&.join("\n") end def domain_whitelist_raw=(values) diff --git a/app/models/concerns/issuable.rb b/app/models/concerns/issuable.rb index 3517969eabc65b45ae612944c8e525df1ffffbc9..d1872dd931dc7ba14cf41a2913001dd4236d516d 100644 --- a/app/models/concerns/issuable.rb +++ b/app/models/concerns/issuable.rb @@ -95,8 +95,8 @@ def award_emojis_loaded? def update_assignee_cache_counts # make sure we flush the cache for both the old *and* new assignees(if they exist) previous_assignee = User.find_by_id(assignee_id_was) if assignee_id_was - previous_assignee.update_cache_counts if previous_assignee - assignee.update_cache_counts if assignee + previous_assignee&.update_cache_counts + assignee&.update_cache_counts end # We want to use optimistic lock for cases when only title or description are involved diff --git a/app/models/concerns/milestoneish.rb b/app/models/concerns/milestoneish.rb index e9450dd0c26cf331a53f9ca8358a6b6ff23df8c1..f449229864d44debc9fb5b3e5ff0a177a2141eeb 100644 --- a/app/models/concerns/milestoneish.rb +++ b/app/models/concerns/milestoneish.rb @@ -73,7 +73,7 @@ def count_issues_by_state(user) def memoize_per_user(user, method_name) @memoized ||= {} @memoized[method_name] ||= {} - @memoized[method_name][user.try!(:id)] ||= yield + @memoized[method_name][user&.id] ||= yield end # override in a class that includes this module to get a faster query diff --git a/app/models/group_milestone.rb b/app/models/group_milestone.rb index 7b6db2634b7107a4cebb2ae55d9961f4fe909a2d..86d38e5468b8bc843b521677d15a50b33c093b78 100644 --- a/app/models/group_milestone.rb +++ b/app/models/group_milestone.rb @@ -9,7 +9,7 @@ def self.build_collection(group, projects, params) def self.build(group, projects, title) super(projects, title).tap do |milestone| - milestone.group = group if milestone + milestone&.group = group end end diff --git a/app/models/project.rb b/app/models/project.rb index c17bcedf7b202cd5c6c20fe403050a7e5f44bf48..aa408b4556e594f7974390ad6b86210617fbda6e 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -469,7 +469,7 @@ def add_import_job def reset_cache_and_import_attrs ProjectCacheWorker.perform_async(self.id) - self.import_data.destroy if self.import_data + self.import_data&.destroy end def import_url=(value) diff --git a/app/models/user.rb b/app/models/user.rb index f9245cdb82a8edd6f3e417fe7a1fb323877692f6..867e61af56a944cd1eb72e09ec3bf1e867a5c3aa 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -314,7 +314,7 @@ def find_by_username!(username) def find_by_personal_access_token(token_string) personal_access_token = PersonalAccessToken.active.find_by_token(token_string) if token_string - personal_access_token.user if personal_access_token + personal_access_token&.user end # Returns a user for the given SSH key. diff --git a/app/models/wiki_page.rb b/app/models/wiki_page.rb index c3de278f5b7ecd14f1d3c029b46e7d9d53f8532f..e93d0eab6d8c5d338d78a3f02fd22307dcf068b8 100644 --- a/app/models/wiki_page.rb +++ b/app/models/wiki_page.rb @@ -69,16 +69,12 @@ def title=(new_title) # The raw content of this page. def content - @attributes[:content] ||= if @page - @page.text_data - end + @attributes[:content] ||= @page&.text_data end # The processed/formatted content of this page. def formatted_content - @attributes[:formatted_content] ||= if @page - @page.formatted_data - end + @attributes[:formatted_content] ||= @page&.formatted_data end # The markup format for the page. diff --git a/app/services/create_tag_service.rb b/app/services/create_tag_service.rb index fe9353afeb8f4ff0c876845f51a677cd6d511c82..6c75d1f04ffe281709dac0a54ac8852107140a4d 100644 --- a/app/services/create_tag_service.rb +++ b/app/services/create_tag_service.rb @@ -4,7 +4,7 @@ def execute(tag_name, target, message, release_description = nil) return error('Tag name invalid') unless valid_tag repository = project.repository - message.strip! if message + message&.strip! new_tag = nil diff --git a/app/services/delete_tag_service.rb b/app/services/delete_tag_service.rb index 9d4bffb93e9e182d69e2e1c1cf423ce9f1563835..eb726cb04b1641253b186d48df624096684f6e1c 100644 --- a/app/services/delete_tag_service.rb +++ b/app/services/delete_tag_service.rb @@ -9,7 +9,7 @@ def execute(tag_name) if repository.rm_tag(current_user, tag_name) release = project.releases.find_by(tag: tag_name) - release.destroy if release + release&.destroy push_data = build_push_data(tag) EventCreateService.new.push(project, current_user, push_data) diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb index c7cce0c55b9dea73b4f2040aa08e3b67833a8ec2..6dc3d8c2416012723c49758d4c53ea09e31765f1 100644 --- a/app/services/projects/create_service.rb +++ b/app/services/projects/create_service.rb @@ -97,7 +97,7 @@ def after_create_actions @project.team << [current_user, :master, current_user] end - @project.group.refresh_members_authorized_projects if @project.group + @project.group&.refresh_members_authorized_projects end def skip_wiki? diff --git a/app/workers/authorized_projects_worker.rb b/app/workers/authorized_projects_worker.rb index 6abbb5a525041b51e501c9b24cc65fca165e4780..0e20df506a371d5765c5ae83e17b204cf0b9de76 100644 --- a/app/workers/authorized_projects_worker.rb +++ b/app/workers/authorized_projects_worker.rb @@ -16,6 +16,6 @@ def self.bulk_perform_async(args_list) def perform(user_id) user = User.find_by(id: user_id) - user.refresh_authorized_projects if user + user&.refresh_authorized_projects end end diff --git a/lib/api/branches.rb b/lib/api/branches.rb index be659fa4a6ac50f17f7ec5155ee66d00b1020a9b..9331be1f7de1b46d545fab132ff78e397db12004 100644 --- a/lib/api/branches.rb +++ b/lib/api/branches.rb @@ -84,7 +84,7 @@ class Branches < Grape::API branch = user_project.repository.find_branch(params[:branch]) not_found!("Branch") unless branch protected_branch = user_project.protected_branches.find_by(name: branch.name) - protected_branch.destroy if protected_branch + protected_branch&.destroy present branch, with: Entities::RepoBranch, project: user_project end diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 3a5819d1bab63074a5eee27c6a04df2b5d1e13e3..2a071e649fa28908252e5ddcf87b478ab0025d65 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -380,9 +380,7 @@ class Event < Grape::Entity expose :author, using: Entities::UserBasic, if: ->(event, options) { event.author } expose :author_username do |event, options| - if event.author - event.author.username - end + event.author&.username end end diff --git a/lib/gitlab/ci/config/entry/configurable.rb b/lib/gitlab/ci/config/entry/configurable.rb index 833ae4a0ff3244a8c049e45ba854241ba4e4a380..e05aca9881b75a291e8247ebd5c89d93f8f02f83 100644 --- a/lib/gitlab/ci/config/entry/configurable.rb +++ b/lib/gitlab/ci/config/entry/configurable.rb @@ -58,7 +58,7 @@ def entry(key, entry, metadata) def helpers(*nodes) nodes.each do |symbol| define_method("#{symbol}_defined?") do - @entries[symbol].specified? if @entries[symbol] + @entries[symbol]&.specified? end define_method("#{symbol}_value") do diff --git a/lib/gitlab/email/message/repository_push.rb b/lib/gitlab/email/message/repository_push.rb index 0e3b65fceb4fe7b31ad1b9e9c6990ecc3e98d21e..6c69cd9e6a9b5be59139742a3e093d57eb2e3b9c 100644 --- a/lib/gitlab/email/message/repository_push.rb +++ b/lib/gitlab/email/message/repository_push.rb @@ -46,7 +46,7 @@ def diffs end def diffs_count - diffs.size if diffs + diffs&.size end def compare @@ -58,7 +58,7 @@ def diff_refs end def compare_timeout - diffs.overflow? if diffs + diffs&.overflow? end def reverse_compare? diff --git a/lib/gitlab/git/blob_snippet.rb b/lib/gitlab/git/blob_snippet.rb index e98de57fc22b893d8203448fb927b50e3128d74f..d7975f88aaa663ad72278abf6587d00912c10c5d 100644 --- a/lib/gitlab/git/blob_snippet.rb +++ b/lib/gitlab/git/blob_snippet.rb @@ -13,7 +13,7 @@ def initialize(ref, lines, startline, filename) end def data - lines.join("\n") if lines + lines&.join("\n") end def name diff --git a/lib/gitlab/metrics.rb b/lib/gitlab/metrics.rb index 3d1ba33ec68d69378450449758b211fe1b2a7509..857e0abf7109a55d86338af301888b0a2153a2a4 100644 --- a/lib/gitlab/metrics.rb +++ b/lib/gitlab/metrics.rb @@ -112,7 +112,7 @@ def self.measure(name) def self.tag_transaction(name, value) trans = current_transaction - trans.add_tag(name, value) if trans + trans&.add_tag(name, value) end # Sets the action of the current transaction (if any) @@ -121,7 +121,7 @@ def self.tag_transaction(name, value) def self.action=(action) trans = current_transaction - trans.action = action if trans + trans&.action = action end # Tracks an event. @@ -130,7 +130,7 @@ def self.action=(action) def self.add_event(*args) trans = current_transaction - trans.add_event(*args) if trans + trans&.add_event(*args) end # Returns the prefix to use for the name of a series.