diff --git a/app/models/merge_request_diff.rb b/app/models/merge_request_diff.rb
index 351a662ae83cbc6c3962528b942056f5efa479c5..e53e2c8fc43bf22870fbb2c1abcaec4b2977746a 100644
--- a/app/models/merge_request_diff.rb
+++ b/app/models/merge_request_diff.rb
@@ -286,13 +286,11 @@ def opening_external_diff
     return yield(@external_diff_file) if @external_diff_file
 
     external_diff.open do |file|
-      begin
-        @external_diff_file = file
+      @external_diff_file = file
 
-        yield(@external_diff_file)
-      ensure
-        @external_diff_file = nil
-      end
+      yield(@external_diff_file)
+    ensure
+      @external_diff_file = nil
     end
   end
 
diff --git a/app/models/merge_request_diff_file.rb b/app/models/merge_request_diff_file.rb
index e8d936e265cd80bf664b3110e2243a71e32dc7aa..16ec4ed470f1e0f612a030624ae9e51ceaf873a6 100644
--- a/app/models/merge_request_diff_file.rb
+++ b/app/models/merge_request_diff_file.rb
@@ -23,6 +23,6 @@ def diff
         super
       end
 
-    binary? ? content.unpack('m0').first : content
+    binary? ? content.unpack1('m0') : content
   end
 end
diff --git a/app/models/project.rb b/app/models/project.rb
index aba63032cdfba28fc317abc00de7203d732d2568..59b139e59863b8de1890f000e8b6dcd01ab9ac4f 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -1209,11 +1209,9 @@ def url_to_repo
 
   def repo_exists?
     strong_memoize(:repo_exists) do
-      begin
-        repository.exists?
-      rescue
-        false
-      end
+      repository.exists?
+    rescue
+      false
     end
   end
 
diff --git a/app/models/project_services/jira_service.rb b/app/models/project_services/jira_service.rb
index f7064d5aaea572f2b076a97e1d3b567a7637c9b1..81302c516c2ff3ede52e6983c9ee9e8e045c349b 100644
--- a/app/models/project_services/jira_service.rb
+++ b/app/models/project_services/jira_service.rb
@@ -205,12 +205,10 @@ def can_cross_reference?(noteable)
   # if any transition fails it will log the error message and stop the transition sequence
   def transition_issue(issue)
     jira_issue_transition_id.scan(Gitlab::Regex.jira_transition_id_regex).each do |transition_id|
-      begin
-        issue.transitions.build.save!(transition: { id: transition_id })
-      rescue => error
-        log_error("Issue transition failed", error: error.message, client_url: client_url)
-        return false
-      end
+      issue.transitions.build.save!(transition: { id: transition_id })
+    rescue => error
+      log_error("Issue transition failed", error: error.message, client_url: client_url)
+      return false
     end
   end
 
diff --git a/app/models/repository.rb b/app/models/repository.rb
index 285fce1e6ddf9c39126d35795e62b36cba413f13..ff35529586293d37ae81ca98654c2c9fa552db7a 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -265,16 +265,14 @@ def languages
   # to avoid unnecessary syncing.
   def keep_around(*shas)
     shas.each do |sha|
-      begin
-        next unless sha.present? && commit_by(oid: sha)
+      next unless sha.present? && commit_by(oid: sha)
 
-        next if kept_around?(sha)
+      next if kept_around?(sha)
 
-        # This will still fail if the file is corrupted (e.g. 0 bytes)
-        raw_repository.write_ref(keep_around_ref_name(sha), sha)
-      rescue Gitlab::Git::CommandError => ex
-        Rails.logger.error "Unable to create keep-around reference for repository #{disk_path}: #{ex}"
-      end
+      # This will still fail if the file is corrupted (e.g. 0 bytes)
+      raw_repository.write_ref(keep_around_ref_name(sha), sha)
+    rescue Gitlab::Git::CommandError => ex
+      Rails.logger.error "Unable to create keep-around reference for repository #{disk_path}: #{ex}"
     end
   end
 
diff --git a/app/models/user_interacted_project.rb b/app/models/user_interacted_project.rb
index ae6778e49be261291561308597fc95751ca3e854..5fc59b274f571b7e99b839fd01ec017480bbe831 100644
--- a/app/models/user_interacted_project.rb
+++ b/app/models/user_interacted_project.rb
@@ -26,16 +26,14 @@ def track(event)
 
       cached_exists?(attributes) do
         transaction(requires_new: true) do
-          begin
-            where(attributes).select(1).first || create!(attributes)
-            true # not caching the whole record here for now
-          rescue ActiveRecord::RecordNotUnique
-            # Note, above queries are not atomic and prone
-            # to race conditions (similar like #find_or_create!).
-            # In the case where we hit this, the record we want
-            # already exists - shortcut and return.
-            true
-          end
+          where(attributes).select(1).first || create!(attributes)
+          true # not caching the whole record here for now
+        rescue ActiveRecord::RecordNotUnique
+          # Note, above queries are not atomic and prone
+          # to race conditions (similar like #find_or_create!).
+          # In the case where we hit this, the record we want
+          # already exists - shortcut and return.
+          true
         end
       end
     end
diff --git a/app/serializers/detailed_status_entity.rb b/app/serializers/detailed_status_entity.rb
index da994d7828654934abb1e35b251af11d0ed4d2da..4f23ef0ed8212bddaeb3baf8403e72593f9f908c 100644
--- a/app/serializers/detailed_status_entity.rb
+++ b/app/serializers/detailed_status_entity.rb
@@ -9,16 +9,14 @@ class DetailedStatusEntity < Grape::Entity
   expose :details_path
 
   expose :illustration do |status|
-    begin
-      illustration = {
-          image: ActionController::Base.helpers.image_path(status.illustration[:image])
-      }
-      illustration = status.illustration.merge(illustration)
+    illustration = {
+        image: ActionController::Base.helpers.image_path(status.illustration[:image])
+    }
+    illustration = status.illustration.merge(illustration)
 
-      illustration
-    rescue NotImplementedError
-      # ignored
-    end
+    illustration
+  rescue NotImplementedError
+    # ignored
   end
 
   expose :favicon do |status|
diff --git a/app/services/projects/lfs_pointers/lfs_download_link_list_service.rb b/app/services/projects/lfs_pointers/lfs_download_link_list_service.rb
index 7998976b00a2c175ce9c5ea8389a219ca7891fea..a9570176e81ea5a17fdf07b97af61e038933c72f 100644
--- a/app/services/projects/lfs_pointers/lfs_download_link_list_service.rb
+++ b/app/services/projects/lfs_pointers/lfs_download_link_list_service.rb
@@ -42,17 +42,15 @@ def get_download_links(oids)
 
       def parse_response_links(objects_response)
         objects_response.each_with_object([]) do |entry, link_list|
-          begin
-            link = entry.dig('actions', DOWNLOAD_ACTION, 'href')
+          link = entry.dig('actions', DOWNLOAD_ACTION, 'href')
 
-            raise DownloadLinkNotFound unless link
+          raise DownloadLinkNotFound unless link
 
-            link_list << LfsDownloadObject.new(oid: entry['oid'],
-                                               size: entry['size'],
-                                               link: add_credentials(link))
-          rescue DownloadLinkNotFound, Addressable::URI::InvalidURIError
-            log_error("Link for Lfs Object with oid #{entry['oid']} not found or invalid.")
-          end
+          link_list << LfsDownloadObject.new(oid: entry['oid'],
+                                             size: entry['size'],
+                                             link: add_credentials(link))
+        rescue DownloadLinkNotFound, Addressable::URI::InvalidURIError
+          log_error("Link for Lfs Object with oid #{entry['oid']} not found or invalid.")
         end
       end
 
diff --git a/app/services/projects/lfs_pointers/lfs_download_service.rb b/app/services/projects/lfs_pointers/lfs_download_service.rb
index 398f00a598d29ddb6bf626eb7f3765bcf1b828b6..a009f479d5d46d5a796d916aad09aad6414ac252 100644
--- a/app/services/projects/lfs_pointers/lfs_download_service.rb
+++ b/app/services/projects/lfs_pointers/lfs_download_service.rb
@@ -75,17 +75,15 @@ def with_tmp_file
         create_tmp_storage_dir
 
         File.open(tmp_filename, 'wb') do |file|
-          begin
-            yield file
-          rescue StandardError => e
-            # If the lfs file is successfully downloaded it will be removed
-            # when it is added to the project's lfs files.
-            # Nevertheless if any excetion raises the file would remain
-            # in the file system. Here we ensure to remove it
-            File.unlink(file) if File.exist?(file)
-
-            raise e
-          end
+          yield file
+        rescue StandardError => e
+          # If the lfs file is successfully downloaded it will be removed
+          # when it is added to the project's lfs files.
+          # Nevertheless if any excetion raises the file would remain
+          # in the file system. Here we ensure to remove it
+          File.unlink(file) if File.exist?(file)
+
+          raise e
         end
       end
 
diff --git a/app/workers/concerns/waitable_worker.rb b/app/workers/concerns/waitable_worker.rb
index 27b94a82444152331461ba88e749b51c74a0e5d4..17946bbc5ca9ea3a191d11f857c70fbf77284428 100644
--- a/app/workers/concerns/waitable_worker.rb
+++ b/app/workers/concerns/waitable_worker.rb
@@ -25,11 +25,9 @@ def bulk_perform_inline(args_list)
       failed = []
 
       args_list.each do |args|
-        begin
-          new.perform(*args)
-        rescue
-          failed << args
-        end
+        new.perform(*args)
+      rescue
+        failed << args
       end
 
       bulk_perform_async(failed) if failed.present?
diff --git a/app/workers/create_gpg_signature_worker.rb b/app/workers/create_gpg_signature_worker.rb
index 49c7a403838726757a7075eb335bfab93b7769b3..2827529cc1cafbd83b0a0f49c5acaea8273034d0 100644
--- a/app/workers/create_gpg_signature_worker.rb
+++ b/app/workers/create_gpg_signature_worker.rb
@@ -20,11 +20,9 @@ def perform(commit_shas, project_id)
 
     # This calculates and caches the signature in the database
     commits.each do |commit|
-      begin
-        Gitlab::Gpg::Commit.new(commit).signature
-      rescue => e
-        Rails.logger.error("Failed to create signature for commit #{commit.id}. Error: #{e.message}")
-      end
+      Gitlab::Gpg::Commit.new(commit).signature
+    rescue => e
+      Rails.logger.error("Failed to create signature for commit #{commit.id}. Error: #{e.message}")
     end
   end
   # rubocop: enable CodeReuse/ActiveRecord
diff --git a/app/workers/emails_on_push_worker.rb b/app/workers/emails_on_push_worker.rb
index 17ad1d5ab88312ad7859b6861724e6a9a820d3c6..ed3e354e4c27d85314758f4f67f37a4be8d25351 100644
--- a/app/workers/emails_on_push_worker.rb
+++ b/app/workers/emails_on_push_worker.rb
@@ -52,24 +52,22 @@ def perform(project_id, recipients, push_data, options = {})
     end
 
     valid_recipients(recipients).each do |recipient|
-      begin
-        send_email(
-          recipient,
-          project_id,
-          author_id:                 author_id,
-          ref:                       ref,
-          action:                    action,
-          compare:                   compare,
-          reverse_compare:           reverse_compare,
-          diff_refs:                 diff_refs,
-          send_from_committer_email: send_from_committer_email,
-          disable_diffs:             disable_diffs
-        )
-
-      # These are input errors and won't be corrected even if Sidekiq retries
-      rescue Net::SMTPFatalError, Net::SMTPSyntaxError => e
-        logger.info("Failed to send e-mail for project '#{project.full_name}' to #{recipient}: #{e}")
-      end
+      send_email(
+        recipient,
+        project_id,
+        author_id:                 author_id,
+        ref:                       ref,
+        action:                    action,
+        compare:                   compare,
+        reverse_compare:           reverse_compare,
+        diff_refs:                 diff_refs,
+        send_from_committer_email: send_from_committer_email,
+        disable_diffs:             disable_diffs
+      )
+
+    # These are input errors and won't be corrected even if Sidekiq retries
+    rescue Net::SMTPFatalError, Net::SMTPSyntaxError => e
+      logger.info("Failed to send e-mail for project '#{project.full_name}' to #{recipient}: #{e}")
     end
   ensure
     @email = nil
diff --git a/app/workers/object_storage/migrate_uploads_worker.rb b/app/workers/object_storage/migrate_uploads_worker.rb
index fe5d27b087d9d9cf470a09a99ff06433fb42fc44..206eb71b89887496b3923ee838a0ce152f86457c 100644
--- a/app/workers/object_storage/migrate_uploads_worker.rb
+++ b/app/workers/object_storage/migrate_uploads_worker.rb
@@ -126,11 +126,9 @@ def migrate(uploads)
 
     def process_uploader(uploader)
       MigrationResult.new(uploader.upload).tap do |result|
-        begin
-          uploader.migrate!(@to_store)
-        rescue => e
-          result.error = e
-        end
+        uploader.migrate!(@to_store)
+      rescue => e
+        result.error = e
       end
     end
   end
diff --git a/app/workers/pipeline_schedule_worker.rb b/app/workers/pipeline_schedule_worker.rb
index ac4e9710f3399698fb5114e6a58d38b445779da9..02a69ea3b5445a0203bdf360c240e04f557fd11c 100644
--- a/app/workers/pipeline_schedule_worker.rb
+++ b/app/workers/pipeline_schedule_worker.rb
@@ -8,16 +8,15 @@ class PipelineScheduleWorker
   def perform
     Ci::PipelineSchedule.active.where("next_run_at < ?", Time.now)
       .preload(:owner, :project).find_each do |schedule|
-      begin
-        Ci::CreatePipelineService.new(schedule.project,
-                                      schedule.owner,
-                                      ref: schedule.ref)
-          .execute!(:schedule, ignore_skip_ci: true, save_on_errors: true, schedule: schedule)
-      rescue => e
-        error(schedule, e)
-      ensure
-        schedule.schedule_next_run!
-      end
+
+      Ci::CreatePipelineService.new(schedule.project,
+                                    schedule.owner,
+                                    ref: schedule.ref)
+        .execute!(:schedule, ignore_skip_ci: true, save_on_errors: true, schedule: schedule)
+    rescue => e
+      error(schedule, e)
+    ensure
+      schedule.schedule_next_run!
     end
   end
   # rubocop: enable CodeReuse/ActiveRecord
diff --git a/app/workers/remove_expired_members_worker.rb b/app/workers/remove_expired_members_worker.rb
index 41913900571ee3d211cd8ba2df5bc25672ffacae..3497a1f928064a63d2d06fd01074f6b7991f1041 100644
--- a/app/workers/remove_expired_members_worker.rb
+++ b/app/workers/remove_expired_members_worker.rb
@@ -6,11 +6,9 @@ class RemoveExpiredMembersWorker
 
   def perform
     Member.expired.find_each do |member|
-      begin
-        Members::DestroyService.new.execute(member, skip_authorization: true)
-      rescue => ex
-        logger.error("Expired Member ID=#{member.id} cannot be removed - #{ex}")
-      end
+      Members::DestroyService.new.execute(member, skip_authorization: true)
+    rescue => ex
+      logger.error("Expired Member ID=#{member.id} cannot be removed - #{ex}")
     end
   end
 end
diff --git a/config/initializers/trusted_proxies.rb b/config/initializers/trusted_proxies.rb
index 7af465d84432feaabb2f117219e883eb239998fe..1389640880670754c17dd7fa6ff87e9e4a1be2c6 100644
--- a/config/initializers/trusted_proxies.rb
+++ b/config/initializers/trusted_proxies.rb
@@ -14,10 +14,8 @@ def trusted_proxy?(ip)
 end
 
 gitlab_trusted_proxies = Array(Gitlab.config.gitlab.trusted_proxies).map do |proxy|
-  begin
-    IPAddr.new(proxy)
-  rescue IPAddr::InvalidAddressError
-  end
+  IPAddr.new(proxy)
+rescue IPAddr::InvalidAddressError
 end.compact
 
 Rails.application.config.action_dispatch.trusted_proxies = (
diff --git a/db/migrate/20170530130129_project_foreign_keys_with_cascading_deletes.rb b/db/migrate/20170530130129_project_foreign_keys_with_cascading_deletes.rb
index d40c61f24b114ce012155262c0596ad0d203bcd4..b4658bc40170b5a434753e2d0ddbccd70778855d 100644
--- a/db/migrate/20170530130129_project_foreign_keys_with_cascading_deletes.rb
+++ b/db/migrate/20170530130129_project_foreign_keys_with_cascading_deletes.rb
@@ -126,11 +126,10 @@ def steal_from_queues(queues)
       queues.each do |queue|
         # Stealing is racy so it's possible a pop might be called on an
         # already-empty queue.
-        begin
-          remove_orphans(*queue.pop(true))
-          stolen = true
-        rescue ThreadError
-        end
+
+        remove_orphans(*queue.pop(true))
+        stolen = true
+      rescue ThreadError
       end
 
       break unless stolen
diff --git a/lib/api/project_milestones.rb b/lib/api/project_milestones.rb
index ca24742b7a36e7ddecf50414573935597c3afcbf..9ecbf37b49ab682e0be5014b5d3ec25d732edaba 100644
--- a/lib/api/project_milestones.rb
+++ b/lib/api/project_milestones.rb
@@ -103,17 +103,15 @@ class ProjectMilestones < Grape::API
         detail 'This feature was introduced in GitLab 11.9'
       end
       post ':id/milestones/:milestone_id/promote' do
-        begin
-          authorize! :admin_milestone, user_project
-          authorize! :admin_milestone, user_project.group
+        authorize! :admin_milestone, user_project
+        authorize! :admin_milestone, user_project.group
 
-          milestone = user_project.milestones.find(params[:milestone_id])
-          Milestones::PromoteService.new(user_project, current_user).execute(milestone)
+        milestone = user_project.milestones.find(params[:milestone_id])
+        Milestones::PromoteService.new(user_project, current_user).execute(milestone)
 
-          status(200)
-        rescue Milestones::PromoteService::PromoteMilestoneError => error
-          render_api_error!(error.message, 400)
-        end
+        status(200)
+      rescue Milestones::PromoteService::PromoteMilestoneError => error
+        render_api_error!(error.message, 400)
       end
     end
   end
diff --git a/lib/api/repositories.rb b/lib/api/repositories.rb
index 32e05d844913d995987aabe1095583e426b6eb11..4106a2cdf3863b977723280ddcc24e86232950b0 100644
--- a/lib/api/repositories.rb
+++ b/lib/api/repositories.rb
@@ -89,11 +89,9 @@ def assign_blob_vars!
         optional :format, type: String, desc: 'The archive format'
       end
       get ':id/repository/archive', requirements: { format: Gitlab::PathRegex.archive_formats_regex } do
-        begin
-          send_git_archive user_project.repository, ref: params[:sha], format: params[:format], append_sha: true
-        rescue
-          not_found!('File')
-        end
+        send_git_archive user_project.repository, ref: params[:sha], format: params[:format], append_sha: true
+      rescue
+        not_found!('File')
       end
 
       desc 'Compare two branches, tags, or commits' do
@@ -118,12 +116,10 @@ def assign_blob_vars!
         optional :sort, type: String, values: %w[asc desc], default: 'asc', desc: 'Sort by asc (ascending) or desc (descending)'
       end
       get ':id/repository/contributors' do
-        begin
-          contributors = ::Kaminari.paginate_array(user_project.repository.contributors(order_by: params[:order_by], sort: params[:sort]))
-          present paginate(contributors), with: Entities::Contributor
-        rescue
-          not_found!
-        end
+        contributors = ::Kaminari.paginate_array(user_project.repository.contributors(order_by: params[:order_by], sort: params[:sort]))
+        present paginate(contributors), with: Entities::Contributor
+      rescue
+        not_found!
       end
 
       desc 'Get the common ancestor between commits' do
diff --git a/lib/gitlab/background_migration/archive_legacy_traces.rb b/lib/gitlab/background_migration/archive_legacy_traces.rb
index 92096e29ef10dba363823eddfe001cf1f27f348b..7ee783b8489cc6a191168f35b5adf451fc661783 100644
--- a/lib/gitlab/background_migration/archive_legacy_traces.rb
+++ b/lib/gitlab/background_migration/archive_legacy_traces.rb
@@ -11,11 +11,10 @@ def perform(start_id, stop_id)
         # So we chose a way to use ::Ci::Build directly and we don't change the `archive!` method until 11.1
         ::Ci::Build.finished.without_archived_trace
           .where(id: start_id..stop_id).find_each do |build|
-            begin
-              build.trace.archive!
-            rescue => e
-              Rails.logger.error "Failed to archive live trace. id: #{build.id} message: #{e.message}"
-            end
+
+            build.trace.archive!
+          rescue => e
+            Rails.logger.error "Failed to archive live trace. id: #{build.id} message: #{e.message}"
           end
       end
     end
diff --git a/lib/gitlab/background_migration/normalize_ldap_extern_uids_range.rb b/lib/gitlab/background_migration/normalize_ldap_extern_uids_range.rb
index 698f5e46c0cf29906db7ac2701f0372f78ca357f..48aa369705f3a8757498db95015f36d0f7dcd626 100644
--- a/lib/gitlab/background_migration/normalize_ldap_extern_uids_range.rb
+++ b/lib/gitlab/background_migration/normalize_ldap_extern_uids_range.rb
@@ -302,14 +302,12 @@ def perform(start_id, end_id)
 
         ldap_identities = Identity.where("provider like 'ldap%'").where(id: start_id..end_id)
         ldap_identities.each do |identity|
-          begin
-            identity.extern_uid = Gitlab::Auth::LDAP::DN.new(identity.extern_uid).to_normalized_s
-            unless identity.save
-              Rails.logger.info "Unable to normalize \"#{identity.extern_uid}\". Skipping."
-            end
-          rescue Gitlab::Auth::LDAP::DN::FormatError => e
-            Rails.logger.info "Unable to normalize \"#{identity.extern_uid}\" due to \"#{e.message}\". Skipping."
+          identity.extern_uid = Gitlab::Auth::LDAP::DN.new(identity.extern_uid).to_normalized_s
+          unless identity.save
+            Rails.logger.info "Unable to normalize \"#{identity.extern_uid}\". Skipping."
           end
+        rescue Gitlab::Auth::LDAP::DN::FormatError => e
+          Rails.logger.info "Unable to normalize \"#{identity.extern_uid}\" due to \"#{e.message}\". Skipping."
         end
       end
 
diff --git a/lib/gitlab/background_migration/populate_untracked_uploads.rb b/lib/gitlab/background_migration/populate_untracked_uploads.rb
index a19dc9747fbbd710fcbffbe21c879817a77a33d6..755b5ee725af24c6739c7a7f889f8fb3a90477a0 100644
--- a/lib/gitlab/background_migration/populate_untracked_uploads.rb
+++ b/lib/gitlab/background_migration/populate_untracked_uploads.rb
@@ -34,18 +34,16 @@ def insert_uploads_if_needed(files)
 
       def filter_error_files(files)
         files.partition do |file|
-          begin
-            file.to_h
-            true
-          rescue => e
-            msg = <<~MSG
+          file.to_h
+          true
+        rescue => e
+          msg = <<~MSG
               Error parsing path "#{file.path}":
                 #{e.message}
                 #{e.backtrace.join("\n  ")}
             MSG
-            Rails.logger.error(msg)
-            false
-          end
+          Rails.logger.error(msg)
+          false
         end
       end
 
diff --git a/lib/gitlab/bitbucket_import/importer.rb b/lib/gitlab/bitbucket_import/importer.rb
index 441fdec8a1eb71fb7c2d2d4ac5da2add1db3a5ed..769d3279f911e6c7ec972ba59188d47f3665961a 100644
--- a/lib/gitlab/bitbucket_import/importer.rb
+++ b/lib/gitlab/bitbucket_import/importer.rb
@@ -79,31 +79,29 @@ def import_issues
         create_labels
 
         client.issues(repo).each do |issue|
-          begin
-            description = ''
-            description += @formatter.author_line(issue.author) unless find_user_id(issue.author)
-            description += issue.description
-
-            label_name = issue.kind
-            milestone = issue.milestone ? project.milestones.find_or_create_by(title: issue.milestone) : nil
-
-            gitlab_issue = project.issues.create!(
-              iid: issue.iid,
-              title: issue.title,
-              description: description,
-              state: issue.state,
-              author_id: gitlab_user_id(project, issue.author),
-              milestone: milestone,
-              created_at: issue.created_at,
-              updated_at: issue.updated_at
-            )
-
-            gitlab_issue.labels << @labels[label_name]
-
-            import_issue_comments(issue, gitlab_issue) if gitlab_issue.persisted?
-          rescue StandardError => e
-            errors << { type: :issue, iid: issue.iid, errors: e.message }
-          end
+          description = ''
+          description += @formatter.author_line(issue.author) unless find_user_id(issue.author)
+          description += issue.description
+
+          label_name = issue.kind
+          milestone = issue.milestone ? project.milestones.find_or_create_by(title: issue.milestone) : nil
+
+          gitlab_issue = project.issues.create!(
+            iid: issue.iid,
+            title: issue.title,
+            description: description,
+            state: issue.state,
+            author_id: gitlab_user_id(project, issue.author),
+            milestone: milestone,
+            created_at: issue.created_at,
+            updated_at: issue.updated_at
+          )
+
+          gitlab_issue.labels << @labels[label_name]
+
+          import_issue_comments(issue, gitlab_issue) if gitlab_issue.persisted?
+        rescue StandardError => e
+          errors << { type: :issue, iid: issue.iid, errors: e.message }
         end
       end
       # rubocop: enable CodeReuse/ActiveRecord
@@ -150,37 +148,35 @@ def import_pull_requests
         pull_requests = client.pull_requests(repo)
 
         pull_requests.each do |pull_request|
-          begin
-            description = ''
-            description += @formatter.author_line(pull_request.author) unless find_user_id(pull_request.author)
-            description += pull_request.description
-
-            source_branch_sha = pull_request.source_branch_sha
-            target_branch_sha = pull_request.target_branch_sha
-            source_branch_sha = project.repository.commit(source_branch_sha)&.sha || source_branch_sha
-            target_branch_sha = project.repository.commit(target_branch_sha)&.sha || target_branch_sha
-
-            merge_request = project.merge_requests.create!(
-              iid: pull_request.iid,
-              title: pull_request.title,
-              description: description,
-              source_project: project,
-              source_branch: pull_request.source_branch_name,
-              source_branch_sha: source_branch_sha,
-              target_project: project,
-              target_branch: pull_request.target_branch_name,
-              target_branch_sha: target_branch_sha,
-              state: pull_request.state,
-              author_id: gitlab_user_id(project, pull_request.author),
-              assignee_id: nil,
-              created_at: pull_request.created_at,
-              updated_at: pull_request.updated_at
-            )
-
-            import_pull_request_comments(pull_request, merge_request) if merge_request.persisted?
-          rescue StandardError => e
-            errors << { type: :pull_request, iid: pull_request.iid, errors: e.message, trace: e.backtrace.join("\n"), raw_response: pull_request.raw }
-          end
+          description = ''
+          description += @formatter.author_line(pull_request.author) unless find_user_id(pull_request.author)
+          description += pull_request.description
+
+          source_branch_sha = pull_request.source_branch_sha
+          target_branch_sha = pull_request.target_branch_sha
+          source_branch_sha = project.repository.commit(source_branch_sha)&.sha || source_branch_sha
+          target_branch_sha = project.repository.commit(target_branch_sha)&.sha || target_branch_sha
+
+          merge_request = project.merge_requests.create!(
+            iid: pull_request.iid,
+            title: pull_request.title,
+            description: description,
+            source_project: project,
+            source_branch: pull_request.source_branch_name,
+            source_branch_sha: source_branch_sha,
+            target_project: project,
+            target_branch: pull_request.target_branch_name,
+            target_branch_sha: target_branch_sha,
+            state: pull_request.state,
+            author_id: gitlab_user_id(project, pull_request.author),
+            assignee_id: nil,
+            created_at: pull_request.created_at,
+            updated_at: pull_request.updated_at
+          )
+
+          import_pull_request_comments(pull_request, merge_request) if merge_request.persisted?
+        rescue StandardError => e
+          errors << { type: :pull_request, iid: pull_request.iid, errors: e.message, trace: e.backtrace.join("\n"), raw_response: pull_request.raw }
         end
       end
 
@@ -211,23 +207,21 @@ def import_inline_comments(inline_comments, pull_request, merge_request)
         end
 
         inline_comments.each do |comment|
-          begin
-            attributes = pull_request_comment_attributes(comment)
-            attributes[:discussion_id] = discussion_map[comment.parent_id] if comment.has_parent?
+          attributes = pull_request_comment_attributes(comment)
+          attributes[:discussion_id] = discussion_map[comment.parent_id] if comment.has_parent?
 
-            attributes.merge!(
-              position: position_map[comment.iid],
-              type: 'DiffNote')
+          attributes.merge!(
+            position: position_map[comment.iid],
+            type: 'DiffNote')
 
-            note = merge_request.notes.create!(attributes)
+          note = merge_request.notes.create!(attributes)
 
-            # We can't store a discussion ID until a note is created, so if
-            # replies are created before the parent the discussion ID won't be
-            # linked properly.
-            discussion_map[comment.iid] = note.discussion_id
-          rescue StandardError => e
-            errors << { type: :pull_request, iid: comment.iid, errors: e.message }
-          end
+          # We can't store a discussion ID until a note is created, so if
+          # replies are created before the parent the discussion ID won't be
+          # linked properly.
+          discussion_map[comment.iid] = note.discussion_id
+        rescue StandardError => e
+          errors << { type: :pull_request, iid: comment.iid, errors: e.message }
         end
       end
 
@@ -245,11 +239,9 @@ def build_position(merge_request, pr_comment)
 
       def import_standalone_pr_comments(pr_comments, merge_request)
         pr_comments.each do |comment|
-          begin
-            merge_request.notes.create!(pull_request_comment_attributes(comment))
-          rescue StandardError => e
-            errors << { type: :pull_request, iid: comment.iid, errors: e.message }
-          end
+          merge_request.notes.create!(pull_request_comment_attributes(comment))
+        rescue StandardError => e
+          errors << { type: :pull_request, iid: comment.iid, errors: e.message }
         end
       end
 
diff --git a/lib/gitlab/bitbucket_server_import/importer.rb b/lib/gitlab/bitbucket_server_import/importer.rb
index 4a789ae457f2953e31222aa850f28427101a9879..1d3ddeeb0f13dba0ccad0dffa1b5a9f702243d80 100644
--- a/lib/gitlab/bitbucket_server_import/importer.rb
+++ b/lib/gitlab/bitbucket_server_import/importer.rb
@@ -162,27 +162,23 @@ def import_pull_requests
           restore_branches(batch) if recover_missing_commits
 
           batch.each do |pull_request|
-            begin
-              import_bitbucket_pull_request(pull_request)
-            rescue StandardError => e
-              backtrace = Gitlab::Profiler.clean_backtrace(e.backtrace)
-              log_error(stage: 'import_pull_requests', iid: pull_request.iid, error: e.message, backtrace: backtrace)
-
-              errors << { type: :pull_request, iid: pull_request.iid, errors: e.message, backtrace: backtrace.join("\n"), raw_response: pull_request.raw }
-            end
+            import_bitbucket_pull_request(pull_request)
+          rescue StandardError => e
+            backtrace = Gitlab::Profiler.clean_backtrace(e.backtrace)
+            log_error(stage: 'import_pull_requests', iid: pull_request.iid, error: e.message, backtrace: backtrace)
+
+            errors << { type: :pull_request, iid: pull_request.iid, errors: e.message, backtrace: backtrace.join("\n"), raw_response: pull_request.raw }
           end
         end
       end
 
       def delete_temp_branches
         @temp_branches.each do |branch|
-          begin
-            client.delete_branch(project_key, repository_slug, branch.name, branch.sha)
-            project.repository.delete_branch(branch.name)
-          rescue BitbucketServer::Connection::ConnectionError => e
-            log_error(stage: 'delete_temp_branches', branch: branch.name, error: e.message)
-            @errors << { type: :delete_temp_branches, branch_name: branch.name, errors: e.message }
-          end
+          client.delete_branch(project_key, repository_slug, branch.name, branch.sha)
+          project.repository.delete_branch(branch.name)
+        rescue BitbucketServer::Connection::ConnectionError => e
+          log_error(stage: 'delete_temp_branches', branch: branch.name, error: e.message)
+          @errors << { type: :delete_temp_branches, branch_name: branch.name, errors: e.message }
         end
       end
 
@@ -323,16 +319,14 @@ def build_position(merge_request, pr_comment)
 
       def import_standalone_pr_comments(pr_comments, merge_request)
         pr_comments.each do |comment|
-          begin
-            merge_request.notes.create!(pull_request_comment_attributes(comment))
+          merge_request.notes.create!(pull_request_comment_attributes(comment))
 
-            comment.comments.each do |replies|
-              merge_request.notes.create!(pull_request_comment_attributes(replies))
-            end
-          rescue StandardError => e
-            log_error(stage: 'import_standalone_pr_comments', merge_request_id: merge_request.id, comment_id: comment.id, error: e.message)
-            errors << { type: :pull_request, comment_id: comment.id, errors: e.message }
+          comment.comments.each do |replies|
+            merge_request.notes.create!(pull_request_comment_attributes(replies))
           end
+        rescue StandardError => e
+          log_error(stage: 'import_standalone_pr_comments', merge_request_id: merge_request.id, comment_id: comment.id, error: e.message)
+          errors << { type: :pull_request, comment_id: comment.id, errors: e.message }
         end
       end
 
diff --git a/lib/gitlab/ci/build/artifacts/metadata.rb b/lib/gitlab/ci/build/artifacts/metadata.rb
index d45a044686ec127f724507f6160dc3fa97489f95..7011dd1aaf2f2ecf986ab0f0410455162c9ad851 100644
--- a/lib/gitlab/ci/build/artifacts/metadata.rb
+++ b/lib/gitlab/ci/build/artifacts/metadata.rb
@@ -98,7 +98,7 @@ def read_version
 
           def read_uint32(gz)
             binary = gz.read(4)
-            binary.unpack('L>')[0] if binary
+            binary.unpack1('L>') if binary
           end
 
           def read_string(gz)
diff --git a/lib/gitlab/database/multi_threaded_migration.rb b/lib/gitlab/database/multi_threaded_migration.rb
index 1d39a3d0b57dc7f38c88073a55ede8b2f0ff565d..65a6cb8e369dc4dad1137812eb77e05ee2b64243 100644
--- a/lib/gitlab/database/multi_threaded_migration.rb
+++ b/lib/gitlab/database/multi_threaded_migration.rb
@@ -35,12 +35,10 @@ def with_multiple_threads(thread_count, join: true)
         threads = Array.new(thread_count) do
           Thread.new do
             pool.with_connection do |connection|
-              begin
-                Thread.current[MULTI_THREAD_AR_CONNECTION] = connection
-                yield
-              ensure
-                Thread.current[MULTI_THREAD_AR_CONNECTION] = nil
-              end
+              Thread.current[MULTI_THREAD_AR_CONNECTION] = connection
+              yield
+            ensure
+              Thread.current[MULTI_THREAD_AR_CONNECTION] = nil
             end
           end
         end
diff --git a/lib/gitlab/database/sha_attribute.rb b/lib/gitlab/database/sha_attribute.rb
index 8d97adaff99d693382ffd67a5d78b8ecbcc8a68e..109ae7893dad3a5a08eb24bfb22f147438527716 100644
--- a/lib/gitlab/database/sha_attribute.rb
+++ b/lib/gitlab/database/sha_attribute.rb
@@ -22,7 +22,7 @@ class ShaAttribute < BINARY_TYPE
       # Casts binary data to a SHA1 in hexadecimal.
       def deserialize(value)
         value = super(value)
-        value ? value.unpack(PACK_FORMAT)[0] : nil
+        value ? value.unpack1(PACK_FORMAT) : nil
       end
 
       # Casts a SHA1 in hexadecimal to the proper binary format.
diff --git a/lib/gitlab/gitaly_client.rb b/lib/gitlab/gitaly_client.rb
index 0a371889af20e8de9402729d82cd83f4d7d3aba7..e3b9a7a1a89bea16e6b91c5ec20d8c9874c2849e 100644
--- a/lib/gitlab/gitaly_client.rb
+++ b/lib/gitlab/gitaly_client.rb
@@ -75,13 +75,11 @@ def self.stub_certs
 
       @certs = stub_cert_paths.flat_map do |cert_file|
         File.read(cert_file).scan(PEM_REGEX).map do |cert|
-          begin
-            OpenSSL::X509::Certificate.new(cert).to_pem
-          rescue OpenSSL::OpenSSLError => e
-            Rails.logger.error "Could not load certificate #{cert_file} #{e}"
-            Gitlab::Sentry.track_exception(e, extra: { cert_file: cert_file })
-            nil
-          end
+          OpenSSL::X509::Certificate.new(cert).to_pem
+        rescue OpenSSL::OpenSSLError => e
+          Rails.logger.error "Could not load certificate #{cert_file} #{e}"
+          Gitlab::Sentry.track_exception(e, extra: { cert_file: cert_file })
+          nil
         end.compact
       end.uniq.join("\n")
     end
diff --git a/lib/gitlab/gitaly_client/blobs_stitcher.rb b/lib/gitlab/gitaly_client/blobs_stitcher.rb
index 01bab854082aa5f4b9374af103c310c2ae2dbc19..f860d8ce5178ebafec4459b58cb4b088b9b11e43 100644
--- a/lib/gitlab/gitaly_client/blobs_stitcher.rb
+++ b/lib/gitlab/gitaly_client/blobs_stitcher.rb
@@ -13,17 +13,15 @@ def each
         current_blob_data = nil
 
         @rpc_response.each do |msg|
-          begin
-            if msg.oid.blank? && msg.data.blank?
-              next
-            elsif msg.oid.present?
-              yield new_blob(current_blob_data) if current_blob_data
-
-              current_blob_data = msg.to_h.slice(:oid, :path, :size, :revision, :mode)
-              current_blob_data[:data] = msg.data.dup
-            else
-              current_blob_data[:data] << msg.data
-            end
+          if msg.oid.blank? && msg.data.blank?
+            next
+          elsif msg.oid.present?
+            yield new_blob(current_blob_data) if current_blob_data
+
+            current_blob_data = msg.to_h.slice(:oid, :path, :size, :revision, :mode)
+            current_blob_data[:data] = msg.data.dup
+          else
+            current_blob_data[:data] << msg.data
           end
         end
 
diff --git a/lib/gitlab/legacy_github_import/importer.rb b/lib/gitlab/legacy_github_import/importer.rb
index f3323c98af22088912886b857cf103f59688d7a4..70b18221a66e7a50133a00ff44aedf299c458cae 100644
--- a/lib/gitlab/legacy_github_import/importer.rb
+++ b/lib/gitlab/legacy_github_import/importer.rb
@@ -89,12 +89,10 @@ def handle_errors
       def import_labels
         fetch_resources(:labels, repo, per_page: 100) do |labels|
           labels.each do |raw|
-            begin
-              gh_label = LabelFormatter.new(project, raw)
-              gh_label.create!
-            rescue => e
-              errors << { type: :label, url: Gitlab::UrlSanitizer.sanitize(gh_label.url), errors: e.message }
-            end
+            gh_label = LabelFormatter.new(project, raw)
+            gh_label.create!
+          rescue => e
+            errors << { type: :label, url: Gitlab::UrlSanitizer.sanitize(gh_label.url), errors: e.message }
           end
         end
 
@@ -104,12 +102,10 @@ def import_labels
       def import_milestones
         fetch_resources(:milestones, repo, state: :all, per_page: 100) do |milestones|
           milestones.each do |raw|
-            begin
-              gh_milestone = MilestoneFormatter.new(project, raw)
-              gh_milestone.create!
-            rescue => e
-              errors << { type: :milestone, url: Gitlab::UrlSanitizer.sanitize(gh_milestone.url), errors: e.message }
-            end
+            gh_milestone = MilestoneFormatter.new(project, raw)
+            gh_milestone.create!
+          rescue => e
+            errors << { type: :milestone, url: Gitlab::UrlSanitizer.sanitize(gh_milestone.url), errors: e.message }
           end
         end
       end
@@ -223,24 +219,22 @@ def import_comments(issuable_type)
       def create_comments(comments)
         ActiveRecord::Base.no_touching do
           comments.each do |raw|
-            begin
-              comment = CommentFormatter.new(project, raw, client)
+            comment = CommentFormatter.new(project, raw, client)
 
-              # GH does not return info about comment's parent, so we guess it by checking its URL!
-              *_, parent, iid = URI(raw.html_url).path.split('/')
+            # GH does not return info about comment's parent, so we guess it by checking its URL!
+            *_, parent, iid = URI(raw.html_url).path.split('/')
 
-              issuable = if parent == 'issues'
-                           Issue.find_by(project_id: project.id, iid: iid)
-                         else
-                           MergeRequest.find_by(target_project_id: project.id, iid: iid)
-                         end
+            issuable = if parent == 'issues'
+                         Issue.find_by(project_id: project.id, iid: iid)
+                       else
+                         MergeRequest.find_by(target_project_id: project.id, iid: iid)
+                       end
 
-              next unless issuable
+            next unless issuable
 
-              issuable.notes.create!(comment.attributes)
-            rescue => e
-              errors << { type: :comment, url: Gitlab::UrlSanitizer.sanitize(raw.url), errors: e.message }
-            end
+            issuable.notes.create!(comment.attributes)
+          rescue => e
+            errors << { type: :comment, url: Gitlab::UrlSanitizer.sanitize(raw.url), errors: e.message }
           end
         end
       end
@@ -281,12 +275,10 @@ def import_wiki
       def import_releases
         fetch_resources(:releases, repo, per_page: 100) do |releases|
           releases.each do |raw|
-            begin
-              gh_release = ReleaseFormatter.new(project, raw)
-              gh_release.create! if gh_release.valid?
-            rescue => e
-              errors << { type: :release, url: Gitlab::UrlSanitizer.sanitize(gh_release.url), errors: e.message }
-            end
+            gh_release = ReleaseFormatter.new(project, raw)
+            gh_release.create! if gh_release.valid?
+          rescue => e
+            errors << { type: :release, url: Gitlab::UrlSanitizer.sanitize(gh_release.url), errors: e.message }
           end
         end
       end
diff --git a/lib/gitlab/metrics/influx_db.rb b/lib/gitlab/metrics/influx_db.rb
index 0b04340fbb55ee8fdb7fcedb352f6dce4e56fa61..269d90fa971a50f5fd392c9c90369872e2486d7f 100644
--- a/lib/gitlab/metrics/influx_db.rb
+++ b/lib/gitlab/metrics/influx_db.rb
@@ -52,10 +52,8 @@ def submit_metrics(metrics)
 
           pool&.with do |connection|
             prepared.each_slice(settings[:packet_size]) do |slice|
-              begin
-                connection.write_points(slice)
-              rescue StandardError
-              end
+              connection.write_points(slice)
+            rescue StandardError
             end
           end
         rescue Errno::EADDRNOTAVAIL, SocketError => ex
diff --git a/lib/tasks/gitlab/artifacts/migrate.rake b/lib/tasks/gitlab/artifacts/migrate.rake
index e7634d2ed4f3aa984f9f6461bf64f1b5ad3fc76d..9012e55a70cc7c7f7b63035b35322e82d265c86e 100644
--- a/lib/tasks/gitlab/artifacts/migrate.rake
+++ b/lib/tasks/gitlab/artifacts/migrate.rake
@@ -11,14 +11,13 @@ namespace :gitlab do
       Ci::Build.joins(:project)
         .with_artifacts_stored_locally
         .find_each(batch_size: 10) do |build|
-        begin
-          build.artifacts_file.migrate!(ObjectStorage::Store::REMOTE)
-          build.artifacts_metadata.migrate!(ObjectStorage::Store::REMOTE)
 
-          logger.info("Transferred artifact ID #{build.id} with size #{build.artifacts_size} to object storage")
-        rescue => e
-          logger.error("Failed to transfer artifacts of #{build.id} with error: #{e.message}")
-        end
+        build.artifacts_file.migrate!(ObjectStorage::Store::REMOTE)
+        build.artifacts_metadata.migrate!(ObjectStorage::Store::REMOTE)
+
+        logger.info("Transferred artifact ID #{build.id} with size #{build.artifacts_size} to object storage")
+      rescue => e
+        logger.error("Failed to transfer artifacts of #{build.id} with error: #{e.message}")
       end
     end
   end
diff --git a/lib/tasks/gitlab/lfs/migrate.rake b/lib/tasks/gitlab/lfs/migrate.rake
index a45e5ca91e0ca932e413e3187f049f7dba5763e1..97c15175a23e4a57ecb0f73956a06b98783903f3 100644
--- a/lib/tasks/gitlab/lfs/migrate.rake
+++ b/lib/tasks/gitlab/lfs/migrate.rake
@@ -9,13 +9,12 @@ namespace :gitlab do
 
       LfsObject.with_files_stored_locally
         .find_each(batch_size: 10) do |lfs_object|
-          begin
-            lfs_object.file.migrate!(LfsObjectUploader::Store::REMOTE)
 
-            logger.info("Transferred LFS object #{lfs_object.oid} of size #{lfs_object.size.to_i.bytes} to object storage")
-          rescue => e
-            logger.error("Failed to transfer LFS object #{lfs_object.oid} with error: #{e.message}")
-          end
+          lfs_object.file.migrate!(LfsObjectUploader::Store::REMOTE)
+
+          logger.info("Transferred LFS object #{lfs_object.oid} of size #{lfs_object.size.to_i.bytes} to object storage")
+        rescue => e
+          logger.error("Failed to transfer LFS object #{lfs_object.oid} with error: #{e.message}")
         end
     end
   end
diff --git a/lib/tasks/gitlab/traces.rake b/lib/tasks/gitlab/traces.rake
index 5a232091a7edd8febf93d2a8f3b636562820a0f8..5e1ec481ece9e83263946f78a244270ee5cbf498 100644
--- a/lib/tasks/gitlab/traces.rake
+++ b/lib/tasks/gitlab/traces.rake
@@ -26,13 +26,12 @@ namespace :gitlab do
       Ci::Build.joins(:project)
         .with_archived_trace_stored_locally
         .find_each(batch_size: 10) do |build|
-        begin
-          build.job_artifacts_trace.file.migrate!(ObjectStorage::Store::REMOTE)
 
-          logger.info("Transferred job trace of #{build.id} to object storage")
-        rescue => e
-          logger.error("Failed to transfer artifacts of #{build.id} with error: #{e.message}")
-        end
+        build.job_artifacts_trace.file.migrate!(ObjectStorage::Store::REMOTE)
+
+        logger.info("Transferred job trace of #{build.id} to object storage")
+      rescue => e
+        logger.error("Failed to transfer artifacts of #{build.id} with error: #{e.message}")
       end
     end
   end
diff --git a/lib/tasks/lint.rake b/lib/tasks/lint.rake
index 5d673a1a2855d52b8711e0e7829bc17a1510ef8f..c5d0f2c292fe347c0a04c2fd9a02a1c604d87065 100644
--- a/lib/tasks/lint.rake
+++ b/lib/tasks/lint.rake
@@ -19,11 +19,9 @@ unless Rails.env.production?
 
     desc "GitLab | lint | Lint HAML files"
     task :haml do
-      begin
-        Rake::Task['haml_lint'].invoke
-      rescue RuntimeError # The haml_lint tasks raise a RuntimeError
-        exit(1)
-      end
+      Rake::Task['haml_lint'].invoke
+    rescue RuntimeError # The haml_lint tasks raise a RuntimeError
+      exit(1)
     end
 
     desc "GitLab | lint | Run several lint checks"
diff --git a/lib/tasks/migrate/migrate_iids.rake b/lib/tasks/migrate/migrate_iids.rake
index aa2d01730d7ce57e5d481afca1801fafc3042d1e..cb7c496c31cc3b27db031758500cceff1d1e1714 100644
--- a/lib/tasks/migrate/migrate_iids.rake
+++ b/lib/tasks/migrate/migrate_iids.rake
@@ -2,49 +2,43 @@ desc "GitLab | Build internal ids for issues and merge requests"
 task migrate_iids: :environment do
   puts 'Issues'.color(:yellow)
   Issue.where(iid: nil).find_each(batch_size: 100) do |issue|
-    begin
-      issue.set_iid
+    issue.set_iid
 
-      if issue.update_attribute(:iid, issue.iid)
-        print '.'
-      else
-        print 'F'
-      end
-    rescue
+    if issue.update_attribute(:iid, issue.iid)
+      print '.'
+    else
       print 'F'
     end
+  rescue
+    print 'F'
   end
 
   puts 'done'
   puts 'Merge Requests'.color(:yellow)
   MergeRequest.where(iid: nil).find_each(batch_size: 100) do |mr|
-    begin
-      mr.set_iid
+    mr.set_iid
 
-      if mr.update_attribute(:iid, mr.iid)
-        print '.'
-      else
-        print 'F'
-      end
-    rescue
+    if mr.update_attribute(:iid, mr.iid)
+      print '.'
+    else
       print 'F'
     end
+  rescue
+    print 'F'
   end
 
   puts 'done'
   puts 'Milestones'.color(:yellow)
   Milestone.where(iid: nil).find_each(batch_size: 100) do |m|
-    begin
-      m.set_iid
+    m.set_iid
 
-      if m.update_attribute(:iid, m.iid)
-        print '.'
-      else
-        print 'F'
-      end
-    rescue
+    if m.update_attribute(:iid, m.iid)
+      print '.'
+    else
       print 'F'
     end
+  rescue
+    print 'F'
   end
 
   puts 'done'
diff --git a/qa/qa/page/project/web_ide/edit.rb b/qa/qa/page/project/web_ide/edit.rb
index 2b6c01888d59a148af13124b4a54b67837eab3d8..ff7cc04e352c3532443c7838f81fe512a6edc72e 100644
--- a/qa/qa/page/project/web_ide/edit.rb
+++ b/qa/qa/page/project/web_ide/edit.rb
@@ -43,11 +43,9 @@ def has_file?(file_name)
           def create_new_file_from_template(file_name, template)
             click_element :new_file
             within_element(:template_list) do
-              begin
-                click_on file_name
-              rescue Capybara::ElementNotFound
-                raise ElementNotFound, %Q(Couldn't find file template named "#{file_name}". Please confirm that it is a valid option.)
-              end
+              click_on file_name
+            rescue Capybara::ElementNotFound
+              raise ElementNotFound, %Q(Couldn't find file template named "#{file_name}". Please confirm that it is a valid option.)
             end
 
             wait(reload: false) do
diff --git a/scripts/gitaly_test.rb b/scripts/gitaly_test.rb
index dee4c2eba7e19bb172936780b1b2fb85ae675ebd..b5d3facd18aecebbf27f436d3370280ab293430e 100644
--- a/scripts/gitaly_test.rb
+++ b/scripts/gitaly_test.rb
@@ -79,15 +79,13 @@ def try_connect!
     socket = read_socket_path
 
     Integer(timeout / delay).times do
-      begin
-        UNIXSocket.new(socket)
-        puts ' OK'
-
-        return
-      rescue Errno::ENOENT, Errno::ECONNREFUSED
-        print '.'
-        sleep delay
-      end
+      UNIXSocket.new(socket)
+      puts ' OK'
+
+      return
+    rescue Errno::ENOENT, Errno::ECONNREFUSED
+      print '.'
+      sleep delay
     end
 
     puts ' FAILED'
diff --git a/scripts/merge-simplecov b/scripts/merge-simplecov
index 65f93f8830b7a7a07c7b02345b1e9cccbf26cff5..746be3317a7df3b0932e70cd30edae60a3ec6664 100755
--- a/scripts/merge-simplecov
+++ b/scripts/merge-simplecov
@@ -12,11 +12,9 @@ module SimpleCov
 
       def resultset_hashes
         resultset_files.map do |path|
-          begin
-            JSON.parse(File.read(path))
-          rescue
-            {}
-          end
+          JSON.parse(File.read(path))
+        rescue
+          {}
         end
       end
 
diff --git a/spec/lib/gitlab/background_migration/deserialize_merge_request_diffs_and_commits_spec.rb b/spec/lib/gitlab/background_migration/deserialize_merge_request_diffs_and_commits_spec.rb
index bc71a90605ad4e26de78d6fbb05f30736baf88aa..e7ff9169f1bce5ec8a2a0c1bb39ebb8067708904 100644
--- a/spec/lib/gitlab/background_migration/deserialize_merge_request_diffs_and_commits_spec.rb
+++ b/spec/lib/gitlab/background_migration/deserialize_merge_request_diffs_and_commits_spec.rb
@@ -172,10 +172,8 @@ def convert_to_yaml(merge_request_diff_id, commits, diffs)
         let(:exception) { ActiveRecord::RecordNotFound }
 
         let(:perform_ignoring_exceptions) do
-          begin
-            subject.perform(start_id, stop_id)
-          rescue described_class::Error
-          end
+          subject.perform(start_id, stop_id)
+        rescue described_class::Error
         end
 
         before do
diff --git a/spec/lib/gitlab/git/repository_cleaner_spec.rb b/spec/lib/gitlab/git/repository_cleaner_spec.rb
index 7f9cc2bc9eced9834cd4f5bb4e00a6898a7b8f3e..6602f22843fb802835ecbef0a7072821f24200fc 100644
--- a/spec/lib/gitlab/git/repository_cleaner_spec.rb
+++ b/spec/lib/gitlab/git/repository_cleaner_spec.rb
@@ -37,14 +37,12 @@
       let(:object_map) { Gitlab::HttpIO.new(url, object_map_data.size) }
 
       around do |example|
-        begin
-          tempfile.write(object_map_data)
-          tempfile.close
+        tempfile.write(object_map_data)
+        tempfile.close
 
-          example.run
-        ensure
-          tempfile.unlink
-        end
+        example.run
+      ensure
+        tempfile.unlink
       end
 
       it 'removes internal references' do
diff --git a/spec/rack_servers/puma_spec.rb b/spec/rack_servers/puma_spec.rb
index 431fab87857430efa0d489fc2851a9c8d7b19828..891df4f1a66d6b11c116dd46f89af3f0b2c03d3a 100644
--- a/spec/rack_servers/puma_spec.rb
+++ b/spec/rack_servers/puma_spec.rb
@@ -44,11 +44,9 @@
   end
 
   after(:all) do
-    begin
-      WebMock.disable_net_connect!(allow_localhost: true)
-      Process.kill('TERM', @puma_master_pid)
-    rescue Errno::ESRCH
-    end
+    WebMock.disable_net_connect!(allow_localhost: true)
+    Process.kill('TERM', @puma_master_pid)
+  rescue Errno::ESRCH
   end
 
   def wait_puma_boot!(master_pid, ready_file)
diff --git a/spec/services/projects/destroy_service_spec.rb b/spec/services/projects/destroy_service_spec.rb
index dfbdfa2ab69fbddff30f0f49339d3504904abc1f..d3a8ee46f8596f774a8f9862dacdf52c179c3023 100644
--- a/spec/services/projects/destroy_service_spec.rb
+++ b/spec/services/projects/destroy_service_spec.rb
@@ -128,10 +128,8 @@
 
     it 'keeps project team intact upon an error' do
       perform_enqueued_jobs do
-        begin
-          destroy_project(project, user, {})
-        rescue ::Redis::CannotConnectError
-        end
+        destroy_project(project, user, {})
+      rescue ::Redis::CannotConnectError
       end
 
       expect(project.team.members.count).to eq 2
diff --git a/spec/support/helpers/graphql_helpers.rb b/spec/support/helpers/graphql_helpers.rb
index 6cdc19ac2e557933ed32f488a8cc3811e4f49933..ca28325eab9be2b39c97724f08ace1a6c20cd141 100644
--- a/spec/support/helpers/graphql_helpers.rb
+++ b/spec/support/helpers/graphql_helpers.rb
@@ -18,12 +18,10 @@ def resolve(resolver_class, obj: nil, args: {}, ctx: {})
   # Runs a block inside a BatchLoader::Executor wrapper
   def batch(max_queries: nil, &blk)
     wrapper = proc do
-      begin
-        BatchLoader::Executor.ensure_current
-        yield
-      ensure
-        BatchLoader::Executor.clear_current
-      end
+      BatchLoader::Executor.ensure_current
+      yield
+    ensure
+      BatchLoader::Executor.clear_current
     end
 
     if max_queries
diff --git a/spec/support/helpers/stub_object_storage.rb b/spec/support/helpers/stub_object_storage.rb
index e0c50e533a6e7aa4e9f9c2227ed3fad7825f2801..30c8477f16a53857e390c1adae0b13409ecf6065 100644
--- a/spec/support/helpers/stub_object_storage.rb
+++ b/spec/support/helpers/stub_object_storage.rb
@@ -23,15 +23,13 @@ def stub_object_storage(connection_params:, remote_directory:)
     Fog.mock!
 
     ::Fog::Storage.new(connection_params).tap do |connection|
-      begin
-        connection.directories.create(key: remote_directory)
+      connection.directories.create(key: remote_directory)
 
-        # Cleanup remaining files
-        connection.directories.each do |directory|
-          directory.files.map(&:destroy)
-        end
-      rescue Excon::Error::Conflict
+      # Cleanup remaining files
+      connection.directories.each do |directory|
+        directory.files.map(&:destroy)
       end
+    rescue Excon::Error::Conflict
     end
   end
 
diff --git a/spec/support/helpers/test_env.rb b/spec/support/helpers/test_env.rb
index 80a22134021fac5fdc8cb87f41a3169b2999ce9d..dc902d373b8e4de60ad8697f5a5d751ee2530909 100644
--- a/spec/support/helpers/test_env.rb
+++ b/spec/support/helpers/test_env.rb
@@ -202,12 +202,10 @@ def wait_gitaly
     socket = Gitlab::GitalyClient.address('default').sub('unix:', '')
 
     Integer(sleep_time / sleep_interval).times do
-      begin
-        Socket.unix(socket)
-        return
-      rescue
-        sleep sleep_interval
-      end
+      Socket.unix(socket)
+      return
+    rescue
+      sleep sleep_interval
     end
 
     raise "could not connect to gitaly at #{socket.inspect} after #{sleep_time} seconds"