diff --git a/.rubocop.yml b/.rubocop.yml
index 2383697f9ea1354d4fb3aca4745f4842edf790e5..fdaa467eb7d0888ed2a5a7b65664d26801ac8a1c 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -277,7 +277,7 @@ Style/MultilineBlockLayout:
 # Checks that the closing brace in a hash literal is either on the same line as
 # the last hash element, or a new line.
 Style/MultilineHashBraceLayout:
-  Enabled: false
+  Enabled: true
   EnforcedStyle: symmetrical
 
 # Do not use then for multi-line if/unless.
diff --git a/app/controllers/jwt_controller.rb b/app/controllers/jwt_controller.rb
index 3eac628539445410bb9f83f85843328939f6f641..1b40645f2c99b910f16b3d828bef60e1cdce7137 100644
--- a/app/controllers/jwt_controller.rb
+++ b/app/controllers/jwt_controller.rb
@@ -39,7 +39,8 @@ class JwtController < ApplicationController
           message: "HTTP Basic: Access denied\n" \
                    "You have 2FA enabled, please use a personal access token for Git over HTTP.\n" \
                    "You can generate one at #{profile_personal_access_tokens_url}" }
-      ] }, status: 401
+      ]
+    }, status: 401
   end
 
   def render_unauthorized
@@ -47,7 +48,8 @@ class JwtController < ApplicationController
       errors: [
         { code: 'UNAUTHORIZED',
           message: 'HTTP Basic: Access denied' }
-      ] }, status: 401
+      ]
+    }, status: 401
   end
 
   def auth_params
diff --git a/app/controllers/snippets_controller.rb b/app/controllers/snippets_controller.rb
index d22a0ffd88a441aab437f050a8e0d29bc0c11513..2e0f26ade91bd9e454cd99c7bd6f9198b2d5d57f 100644
--- a/app/controllers/snippets_controller.rb
+++ b/app/controllers/snippets_controller.rb
@@ -28,7 +28,8 @@ class SnippetsController < ApplicationController
       @snippets = SnippetsFinder.new.execute(current_user, {
         filter: :by_user,
         user: @user,
-        scope: params[:scope] })
+        scope: params[:scope]
+      })
       .page(params[:page])
 
       render 'index'
diff --git a/app/models/project_services/chat_message/issue_message.rb b/app/models/project_services/chat_message/issue_message.rb
index b96aca47e65969d00ecae36347ffc5553b900a22..791e5b0cec79396588b9edca51e17f9aac1c0733 100644
--- a/app/models/project_services/chat_message/issue_message.rb
+++ b/app/models/project_services/chat_message/issue_message.rb
@@ -51,7 +51,8 @@ module ChatMessage
         title: issue_title,
         title_link: issue_url,
         text: format(description),
-        color: "#C95823" }]
+        color: "#C95823"
+      }]
     end
 
     def project_link
diff --git a/app/models/project_services/irker_service.rb b/app/models/project_services/irker_service.rb
index 5d6862d9faa65ec2b2b177bf32e67397a77a924e..c62bb4fa120c29af99ac80c913a0234feab6faf7 100644
--- a/app/models/project_services/irker_service.rb
+++ b/app/models/project_services/irker_service.rb
@@ -33,7 +33,8 @@ class IrkerService < Service
   end
 
   def settings
-    { server_host: server_host.present? ? server_host : 'localhost',
+    {
+      server_host: server_host.present? ? server_host : 'localhost',
       server_port: server_port.present? ? server_port : 6659
     }
   end
diff --git a/app/models/project_services/kubernetes_service.rb b/app/models/project_services/kubernetes_service.rb
index caf716768370df68986128473da063b0be676a4d..02e802bad6d1b68653da04e2b5b3f8c90780458c 100644
--- a/app/models/project_services/kubernetes_service.rb
+++ b/app/models/project_services/kubernetes_service.rb
@@ -62,23 +62,19 @@ class KubernetesService < DeploymentService
         { type: 'text',
           name: 'namespace',
           title: 'Kubernetes namespace',
-          placeholder: 'Kubernetes namespace',
-        },
+          placeholder: 'Kubernetes namespace' },
         { type: 'text',
           name: 'api_url',
           title: 'API URL',
-          placeholder: 'Kubernetes API URL, like https://kube.example.com/',
-        },
+          placeholder: 'Kubernetes API URL, like https://kube.example.com/' },
         { type: 'text',
           name: 'token',
           title: 'Service token',
-          placeholder: 'Service token',
-        },
+          placeholder: 'Service token' },
         { type: 'textarea',
           name: 'ca_pem',
           title: 'Custom CA bundle',
-          placeholder: 'Certificate Authority bundle (PEM format)',
-        },
+          placeholder: 'Certificate Authority bundle (PEM format)' },
     ]
   end
 
diff --git a/app/models/project_services/pushover_service.rb b/app/models/project_services/pushover_service.rb
index f4106048345354835794782e4b7fad39c8c76605..508d3a5f2fabb123797bddb89a387fda88ec33c5 100644
--- a/app/models/project_services/pushover_service.rb
+++ b/app/models/project_services/pushover_service.rb
@@ -29,8 +29,7 @@ class PushoverService < Service
           ['Normal Priority', 0],
           ['High Priority', 1]
         ],
-        default_choice: 0
-      },
+        default_choice: 0 },
       { type: 'select', name: 'sound', choices:
         [
           ['Device default sound', nil],
@@ -56,8 +55,7 @@ class PushoverService < Service
           ['Pushover Echo (long)', 'echo'],
           ['Up Down (long)', 'updown'],
           ['None (silent)', 'none']
-        ]
-      },
+        ]},
     ]
   end
 
diff --git a/lib/gitlab/ci/config/entry/environment.rb b/lib/gitlab/ci/config/entry/environment.rb
index 940333b92ef2fd4d4666a6c1d75797b9806fafaa..0c1f9eb7cbfa339ace2e7316a3711d7145a59f2d 100644
--- a/lib/gitlab/ci/config/entry/environment.rb
+++ b/lib/gitlab/ci/config/entry/environment.rb
@@ -21,12 +21,14 @@ module Gitlab
             validates :name,
               type: {
                 with: String,
-                message: Gitlab::Regex.environment_name_regex_message }
+                message: Gitlab::Regex.environment_name_regex_message
+              }
 
             validates :name,
               format: {
                 with: Gitlab::Regex.environment_name_regex,
-                message: Gitlab::Regex.environment_name_regex_message }
+                message: Gitlab::Regex.environment_name_regex_message
+              }
 
             with_options if: :hash? do
               validates :config, allowed_keys: ALLOWED_KEYS
diff --git a/spec/controllers/projects/merge_requests_controller_spec.rb b/spec/controllers/projects/merge_requests_controller_spec.rb
index b990f4dae86be2d98af3adba6bf31e1afcf9a71e..c059038f9f25ef2d5ceb40d61f8ac214bf7d0476 100644
--- a/spec/controllers/projects/merge_requests_controller_spec.rb
+++ b/spec/controllers/projects/merge_requests_controller_spec.rb
@@ -54,7 +54,8 @@ describe Projects::MergeRequestsController do
           project_id: fork_project.to_param,
           merge_request: {
             source_branch: 'remove-submodule',
-            target_branch: 'master' },
+            target_branch: 'master'
+          },
           format: format
     end
   end
diff --git a/spec/lib/expand_variables_spec.rb b/spec/lib/expand_variables_spec.rb
index 90bc7dad3799e42e3d8149a13a42fd34b1526ad9..9fe15993a7d56cf9b3245c37749da25e7525b8b3 100644
--- a/spec/lib/expand_variables_spec.rb
+++ b/spec/lib/expand_variables_spec.rb
@@ -7,58 +7,49 @@ describe ExpandVariables do
     tests = [
       { value: 'key',
         result: 'key',
-        variables: []
-      },
+        variables: [] },
       { value: 'key$variable',
         result: 'key',
-        variables: []
-      },
+        variables: [] },
       { value: 'key$variable',
         result: 'keyvalue',
         variables: [
           { key: 'variable', value: 'value' }
-        ]
-      },
+        ]},
       { value: 'key${variable}',
         result: 'keyvalue',
         variables: [
           { key: 'variable', value: 'value' }
-        ]
-      },
+        ]},
       { value: 'key$variable$variable2',
         result: 'keyvalueresult',
         variables: [
           { key: 'variable', value: 'value' },
           { key: 'variable2', value: 'result' },
-        ]
-      },
+        ]},
       { value: 'key${variable}${variable2}',
         result: 'keyvalueresult',
         variables: [
           { key: 'variable', value: 'value' },
           { key: 'variable2', value: 'result' }
-        ]
-      },
+        ]},
       { value: 'key$variable2$variable',
         result: 'keyresultvalue',
         variables: [
           { key: 'variable', value: 'value' },
           { key: 'variable2', value: 'result' },
-        ]
-      },
+        ]},
       { value: 'key${variable2}${variable}',
         result: 'keyresultvalue',
         variables: [
           { key: 'variable', value: 'value' },
           { key: 'variable2', value: 'result' }
-        ]
-      },
+        ]},
       { value: 'review/$CI_BUILD_REF_NAME',
         result: 'review/feature/add-review-apps',
         variables: [
           { key: 'CI_BUILD_REF_NAME', value: 'feature/add-review-apps' }
-        ]
-      },
+        ]},
     ]
 
     tests.each do |test|
diff --git a/spec/lib/gitlab/template/issue_template_spec.rb b/spec/lib/gitlab/template/issue_template_spec.rb
index 1335a2b8f3534261a63ae8c1edbb1c5a9ff0dc5a..9213ced7b194d342c93c2bb949e9f1dcf23882fa 100644
--- a/spec/lib/gitlab/template/issue_template_spec.rb
+++ b/spec/lib/gitlab/template/issue_template_spec.rb
@@ -11,7 +11,8 @@ describe Gitlab::Template::IssueTemplate do
       create_template: {
         user: user,
         access: Gitlab::Access::MASTER,
-        path: 'issue_templates' })
+        path: 'issue_templates'
+      })
   end
 
   describe '.all' do
diff --git a/spec/lib/gitlab/template/merge_request_template_spec.rb b/spec/lib/gitlab/template/merge_request_template_spec.rb
index 320b870309a1ce33c882082c997a6c33c43dcfca..77dd3079e2254becb6d7fb6eafc6cd48b2e2af1d 100644
--- a/spec/lib/gitlab/template/merge_request_template_spec.rb
+++ b/spec/lib/gitlab/template/merge_request_template_spec.rb
@@ -11,7 +11,8 @@ describe Gitlab::Template::MergeRequestTemplate do
       create_template: {
         user: user,
         access: Gitlab::Access::MASTER,
-        path: 'merge_request_templates' })
+        path: 'merge_request_templates'
+      })
   end
 
   describe '.all' do
diff --git a/spec/lib/mattermost/command_spec.rb b/spec/lib/mattermost/command_spec.rb
index c0393eafca9215af8d815d21ac4d26cb1bc6e3e3..369e7b181b9cc7d237f826e16e429d1667f067d2 100644
--- a/spec/lib/mattermost/command_spec.rb
+++ b/spec/lib/mattermost/command_spec.rb
@@ -13,8 +13,7 @@ describe Mattermost::Command do
   describe '#create' do
     let(:params) do
       { team_id: 'abc',
-        trigger: 'gitlab'
-      }
+        trigger: 'gitlab' }
     end
 
     subject { described_class.new(nil).create(params) }
@@ -24,7 +23,8 @@ describe Mattermost::Command do
         stub_request(:post, 'http://mattermost.example.com/api/v3/teams/abc/commands/create')
           .with(body: {
             team_id: 'abc',
-            trigger: 'gitlab' }.to_json)
+            trigger: 'gitlab'
+          }.to_json)
           .to_return(
             status: 200,
             headers: { 'Content-Type' => 'application/json' },
diff --git a/spec/lib/mattermost/team_spec.rb b/spec/lib/mattermost/team_spec.rb
index 4435e3c24b71740ff3b3bad44e75976235629960..339178954eaed85f182afb0aebf23003db9b74fa 100644
--- a/spec/lib/mattermost/team_spec.rb
+++ b/spec/lib/mattermost/team_spec.rb
@@ -14,18 +14,19 @@ describe Mattermost::Team do
     context 'for valid request' do
       let(:response) do
         [{
-           "id" => "xiyro8huptfhdndadpz8r3wnbo",
-           "create_at" => 1482174222155,
-           "update_at" => 1482174222155,
-           "delete_at" => 0,
-           "display_name" => "chatops",
-           "name" => "chatops",
-           "email" => "admin@example.com",
-           "type" => "O",
-           "company_name" => "",
-           "allowed_domains" => "",
-           "invite_id" => "o4utakb9jtb7imctdfzbf9r5ro",
-           "allow_open_invite" => false }]
+          "id" => "xiyro8huptfhdndadpz8r3wnbo",
+          "create_at" => 1482174222155,
+          "update_at" => 1482174222155,
+          "delete_at" => 0,
+          "display_name" => "chatops",
+          "name" => "chatops",
+          "email" => "admin@example.com",
+          "type" => "O",
+          "company_name" => "",
+          "allowed_domains" => "",
+          "invite_id" => "o4utakb9jtb7imctdfzbf9r5ro",
+          "allow_open_invite" => false
+        }]
       end
 
       before do
diff --git a/spec/models/environment_spec.rb b/spec/models/environment_spec.rb
index 1dd66c5243731fa474c60e6aa48cbadd08d603a3..3198f67a041c4abf7de3ef0c6f0ecf5487120107 100644
--- a/spec/models/environment_spec.rb
+++ b/spec/models/environment_spec.rb
@@ -76,7 +76,8 @@ describe Environment, models: true do
   end
 
   describe '#update_merge_request_metrics?' do
-    { 'production' => true,
+    {
+      'production' => true,
       'production/eu' => true,
       'production/www.gitlab.com' => true,
       'productioneu' => false,
diff --git a/spec/models/project_services/drone_ci_service_spec.rb b/spec/models/project_services/drone_ci_service_spec.rb
index 3b5b215513d1eeb111bd005e26b6737a6a365445..82d80206afb339fccc49b324b53af84a53514d35 100644
--- a/spec/models/project_services/drone_ci_service_spec.rb
+++ b/spec/models/project_services/drone_ci_service_spec.rb
@@ -95,12 +95,12 @@ describe DroneCiService, models: true, caching: true do
         is_expected.to eq(:error)
       end
 
-      { "killed"  => :canceled,
+      {
+        "killed"  => :canceled,
         "failure" => :failed,
         "error"   => :failed,
-        "success" => "success",
+        "success" => "success"
       }.each do |drone_status, our_status|
-
         it "sets commit status to #{our_status.inspect} when returned status is #{drone_status.inspect}" do
           stub_request(body: %({"status":"#{drone_status}"}))
 
diff --git a/spec/models/project_services/mattermost_slash_commands_service_spec.rb b/spec/models/project_services/mattermost_slash_commands_service_spec.rb
index 0ee24ac1b5f2664149bea14bbd0afbbed596929f..9082156788e871ab67e774bf1033e24ba6b400a0 100644
--- a/spec/models/project_services/mattermost_slash_commands_service_spec.rb
+++ b/spec/models/project_services/mattermost_slash_commands_service_spec.rb
@@ -36,7 +36,8 @@ describe MattermostSlashCommandsService, :models do
               description: "Perform common operations on: #{project.name_with_namespace}",
               display_name: "GitLab / #{project.name_with_namespace}",
               method: 'P',
-              username: 'GitLab' }.to_json)
+              username: 'GitLab'
+            }.to_json)
             .to_return(
               status: 200,
               headers: { 'Content-Type' => 'application/json' },
diff --git a/spec/requests/lfs_http_spec.rb b/spec/requests/lfs_http_spec.rb
index ccaf9c2f409d7920374e7f40964d4eb69d80c411..5d495bc9e7dd27fe9cd0aeba3dc61b4ac2dfefbf 100644
--- a/spec/requests/lfs_http_spec.rb
+++ b/spec/requests/lfs_http_spec.rb
@@ -25,11 +25,9 @@ describe 'Git LFS API and storage' do
       {
         'objects' => [
           { 'oid' => '91eff75a492a3ed0dfcb544d7f31326bc4014c8551849c192fd1e48d4dd2c897',
-            'size' => 1575078
-          },
+            'size' => 1575078 },
           { 'oid' => sample_oid,
-            'size' => sample_size
-          }
+            'size' => sample_size }
         ],
         'operation' => 'upload'
       }
@@ -53,11 +51,9 @@ describe 'Git LFS API and storage' do
       {
         'objects' => [
           { 'oid' => '91eff75a492a3ed0dfcb544d7f31326bc4014c8551849c192fd1e48d4dd2c897',
-            'size' => 1575078
-          },
+            'size' => 1575078 },
           { 'oid' => sample_oid,
-            'size' => sample_size
-          }
+            'size' => sample_size }
         ],
         'operation' => 'upload'
       }
@@ -378,8 +374,7 @@ describe 'Git LFS API and storage' do
           'operation' => 'download',
           'objects' => [
             { 'oid' => sample_oid,
-              'size' => sample_size
-            }
+              'size' => sample_size }
           ]
         }
       end
@@ -397,7 +392,8 @@ describe 'Git LFS API and storage' do
           it 'with href to download' do
             expect(json_response).to eq({
               'objects' => [
-                { 'oid' => sample_oid,
+                {
+                  'oid' => sample_oid,
                   'size' => sample_size,
                   'actions' => {
                     'download' => {
@@ -424,7 +420,8 @@ describe 'Git LFS API and storage' do
           it 'with href to download' do
             expect(json_response).to eq({
               'objects' => [
-                { 'oid' => sample_oid,
+                {
+                  'oid' => sample_oid,
                   'size' => sample_size,
                   'error' => {
                     'code' => 404,
@@ -442,8 +439,7 @@ describe 'Git LFS API and storage' do
               'operation' => 'download',
               'objects' => [
                 { 'oid' => '91eff75a492a3ed0dfcb544d7f31326bc4014c8551849c192fd1e48d4dd2c897',
-                  'size' => 1575078
-                }
+                  'size' => 1575078 }
               ]
             }
           end
@@ -455,7 +451,8 @@ describe 'Git LFS API and storage' do
           it 'with an 404 for specific object' do
             expect(json_response).to eq({
               'objects' => [
-                { 'oid' => '91eff75a492a3ed0dfcb544d7f31326bc4014c8551849c192fd1e48d4dd2c897',
+                {
+                  'oid' => '91eff75a492a3ed0dfcb544d7f31326bc4014c8551849c192fd1e48d4dd2c897',
                   'size' => 1575078,
                   'error' => {
                     'code' => 404,
@@ -469,14 +466,13 @@ describe 'Git LFS API and storage' do
 
         context 'when downloading one new and one existing lfs object' do
           let(:body) do
-            { 'operation' => 'download',
+            {
+              'operation' => 'download',
               'objects' => [
                 { 'oid' => '91eff75a492a3ed0dfcb544d7f31326bc4014c8551849c192fd1e48d4dd2c897',
-                  'size' => 1575078
-                },
+                  'size' => 1575078 },
                 { 'oid' => sample_oid,
-                  'size' => sample_size
-                }
+                  'size' => sample_size }
               ]
             }
           end
@@ -617,7 +613,8 @@ describe 'Git LFS API and storage' do
           it 'responds with status 200 and href to download' do
             expect(json_response).to eq({
               'objects' => [
-                { 'oid' => sample_oid,
+                {
+                  'oid' => sample_oid,
                   'size' => sample_size,
                   'authenticated' => true,
                   'actions' => {
@@ -651,8 +648,7 @@ describe 'Git LFS API and storage' do
           'operation' => 'upload',
           'objects' => [
             { 'oid' => sample_oid,
-              'size' => sample_size
-            }
+              'size' => sample_size }
           ]
         }
       end
@@ -692,8 +688,7 @@ describe 'Git LFS API and storage' do
                 'operation' => 'upload',
                 'objects' => [
                   { 'oid' => '91eff75a492a3ed0dfcb544d7f31326bc4014c8551849c192fd1e48d4dd2c897',
-                    'size' => 1575078
-                  }
+                    'size' => 1575078 }
                 ]
               }
             end
@@ -713,14 +708,13 @@ describe 'Git LFS API and storage' do
 
           context 'when pushing one new and one existing lfs object' do
             let(:body) do
-              { 'operation' => 'upload',
+              {
+                'operation' => 'upload',
                 'objects' => [
                   { 'oid' => '91eff75a492a3ed0dfcb544d7f31326bc4014c8551849c192fd1e48d4dd2c897',
-                    'size' => 1575078
-                  },
+                    'size' => 1575078 },
                   { 'oid' => sample_oid,
-                    'size' => sample_size
-                  }
+                    'size' => sample_size }
                 ]
               }
             end
@@ -818,8 +812,7 @@ describe 'Git LFS API and storage' do
           'operation' => 'other',
           'objects' => [
             { 'oid' => sample_oid,
-              'size' => sample_size
-            }
+              'size' => sample_size }
           ]
         }
       end
diff --git a/spec/services/create_deployment_service_spec.rb b/spec/services/create_deployment_service_spec.rb
index 6fb4d517115f0bc6b793df52386e21c0edc06a5c..18b964e2453438859e94ac440d793ea2c35a36e7 100644
--- a/spec/services/create_deployment_service_spec.rb
+++ b/spec/services/create_deployment_service_spec.rb
@@ -9,7 +9,8 @@ describe CreateDeploymentService, services: true do
   describe '#execute' do
     let(:options) { nil }
     let(:params) do
-      { environment: 'production',
+      {
+        environment: 'production',
         ref: 'master',
         tag: false,
         sha: '97de212e80737a608d939f648d959671fb0a0142',
@@ -83,10 +84,11 @@ describe CreateDeploymentService, services: true do
 
     context 'for environment with invalid name' do
       let(:params) do
-        { environment: 'name,with,commas',
+        {
+          environment: 'name,with,commas',
           ref: 'master',
           tag: false,
-          sha: '97de212e80737a608d939f648d959671fb0a0142',
+          sha: '97de212e80737a608d939f648d959671fb0a0142'
         }
       end
 
@@ -101,7 +103,8 @@ describe CreateDeploymentService, services: true do
 
     context 'when variables are used' do
       let(:params) do
-        { environment: 'review-apps/$CI_BUILD_REF_NAME',
+        {
+          environment: 'review-apps/$CI_BUILD_REF_NAME',
           ref: 'master',
           tag: false,
           sha: '97de212e80737a608d939f648d959671fb0a0142',
diff --git a/spec/support/kubernetes_helpers.rb b/spec/support/kubernetes_helpers.rb
index 41c40eb508402e1741994babd5b1a295f88a4cfb..b5ed71ba3be162af4c258e8c98f76b7d5dbd59b1 100644
--- a/spec/support/kubernetes_helpers.rb
+++ b/spec/support/kubernetes_helpers.rb
@@ -2,23 +2,24 @@ module KubernetesHelpers
   include Gitlab::Kubernetes
 
   def kube_discovery_body
-    { "kind" => "APIResourceList",
+    {
+      "kind" => "APIResourceList",
       "resources" => [
         { "name" => "pods", "namespaced" => true, "kind" => "Pod" },
-      ],
+      ]
     }
   end
 
   def kube_pods_body(*pods)
     { "kind" => "PodList",
-      "items" => [kube_pod],
-    }
+      "items" => [kube_pod] }
   end
 
   # This is a partial response, it will have many more elements in reality but
   # these are the ones we care about at the moment
   def kube_pod(app: "valid-pod-label")
-    { "metadata" => {
+    {
+      "metadata" => {
         "name" => "kube-pod",
         "creationTimestamp" => "2016-11-25T19:55:19Z",
         "labels" => { "app" => app },
@@ -29,7 +30,7 @@ module KubernetesHelpers
           { "name" => "container-1" },
         ],
       },
-      "status" => { "phase" => "Running" },
+      "status" => { "phase" => "Running" }
     }
   end