diff --git a/.rubocop.yml b/.rubocop.yml
index fdaa467eb7d0888ed2a5a7b65664d26801ac8a1c..21d692c2859c1f116553aed8dd507d9021af8544 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -491,7 +491,7 @@ Style/WhileUntilModifier:
 
 # Use %w or %W for arrays of words.
 Style/WordArray:
-  Enabled: false
+  Enabled: true
 
 # Metrics #####################################################################
 
diff --git a/app/finders/todos_finder.rb b/app/finders/todos_finder.rb
index 10a1f948f931897a94bc66a3d5e8d33930d38749..b7f091f334d2843cc96818d946007fcb0ecb63f1 100644
--- a/app/finders/todos_finder.rb
+++ b/app/finders/todos_finder.rb
@@ -99,7 +99,7 @@ class TodosFinder
   end
 
   def type?
-    type.present? && ['Issue', 'MergeRequest'].include?(type)
+    type.present? && %w(Issue MergeRequest).include?(type)
   end
 
   def type
diff --git a/app/helpers/emails_helper.rb b/app/helpers/emails_helper.rb
index a6d9e37ac760de72c5a4b3b9f2396afa0462b467..f927cfc998f0e6c952f20942160344b68ae1f2ce 100644
--- a/app/helpers/emails_helper.rb
+++ b/app/helpers/emails_helper.rb
@@ -24,7 +24,7 @@ module EmailsHelper
 
   def action_title(url)
     return unless url
-    ["merge_requests", "issues", "commit"].each do |action|
+    %w(merge_requests issues commit).each do |action|
       if url.split("/").include?(action)
         return "View #{action.humanize.singularize}"
       end
diff --git a/app/helpers/tab_helper.rb b/app/helpers/tab_helper.rb
index 547f62589097198fd112d4ca26033ea15e2903e0..1a55ee05996e232172812833488b2d453e2c4747 100644
--- a/app/helpers/tab_helper.rb
+++ b/app/helpers/tab_helper.rb
@@ -99,7 +99,7 @@ module TabHelper
       return 'active'
     end
 
-    if ['services', 'hooks', 'deploy_keys', 'protected_branches'].include? controller.controller_name
+    if %w(services hooks deploy_keys protected_branches).include? controller.controller_name
       "active"
     end
   end
diff --git a/app/helpers/todos_helper.rb b/app/helpers/todos_helper.rb
index c52afd6db1c286af1985750a9472fa8471059c96..7f8efb0a4ac08be622cc95496993d8405dcd2fea 100644
--- a/app/helpers/todos_helper.rb
+++ b/app/helpers/todos_helper.rb
@@ -150,6 +150,6 @@ module TodosHelper
   private
 
   def show_todo_state?(todo)
-    (todo.target.is_a?(MergeRequest) || todo.target.is_a?(Issue)) && ['closed', 'merged'].include?(todo.target.state)
+    (todo.target.is_a?(MergeRequest) || todo.target.is_a?(Issue)) && %w(closed merged).include?(todo.target.state)
   end
 end
diff --git a/app/models/concerns/issuable.rb b/app/models/concerns/issuable.rb
index 303d4910ee1cdbd70c05e9d6ef78d5c92f5fe958..8b33e776e87f7340a788c9712842505cd14c38e4 100644
--- a/app/models/concerns/issuable.rb
+++ b/app/models/concerns/issuable.rb
@@ -182,7 +182,7 @@ module Issuable
     def grouping_columns(sort)
       grouping_columns = [arel_table[:id]]
 
-      if ["milestone_due_desc", "milestone_due_asc"].include?(sort)
+      if %w(milestone_due_desc milestone_due_asc).include?(sort)
         milestone_table = Milestone.arel_table
         grouping_columns << milestone_table[:id]
         grouping_columns << milestone_table[:due_date]
diff --git a/app/models/diff_note.rb b/app/models/diff_note.rb
index 559b30759050c58305cedbba8ace0df22e78fa51..895a91139c98a1e69d8c4e03069ffba3db8c6a3a 100644
--- a/app/models/diff_note.rb
+++ b/app/models/diff_note.rb
@@ -8,7 +8,7 @@ class DiffNote < Note
   validates :position, presence: true
   validates :diff_line, presence: true
   validates :line_code, presence: true, line_code: true
-  validates :noteable_type, inclusion: { in: ['Commit', 'MergeRequest'] }
+  validates :noteable_type, inclusion: { in: %w(Commit MergeRequest) }
   validates :resolved_by, presence: true, if: :resolved?
   validate :positions_complete
   validate :verify_supported
diff --git a/app/models/event.rb b/app/models/event.rb
index 42c4a233ce39cc4304b887a3dea88dd754f4a015..b8918fcda211e6fa0d4dc1f13e83b2947bcc95c9 100644
--- a/app/models/event.rb
+++ b/app/models/event.rb
@@ -47,7 +47,7 @@ class Event < ActiveRecord::Base
     def contributions
       where("action = ? OR (target_type IN (?) AND action IN (?)) OR (target_type = ? AND action = ?)",
             Event::PUSHED,
-            ["MergeRequest", "Issue"], [Event::CREATED, Event::CLOSED, Event::MERGED],
+            %w(MergeRequest Issue), [Event::CREATED, Event::CLOSED, Event::MERGED],
             "Note", Event::COMMENTED)
     end
 
diff --git a/app/models/note.rb b/app/models/note.rb
index 4f87b9a4dc2ef5a94671170e8ef46b51388dc0b2..c6406f644e0641a63c9db4da194db5d9d4ea9756 100644
--- a/app/models/note.rb
+++ b/app/models/note.rb
@@ -72,7 +72,7 @@ class Note < ActiveRecord::Base
   scope :inc_author, ->{ includes(:author) }
   scope :inc_relations_for_view, ->{ includes(:project, :author, :updated_by, :resolved_by, :award_emoji) }
 
-  scope :diff_notes, ->{ where(type: ['LegacyDiffNote', 'DiffNote']) }
+  scope :diff_notes, ->{ where(type: %w(LegacyDiffNote DiffNote)) }
   scope :non_diff_notes, ->{ where(type: ['Note', nil]) }
 
   scope :with_associations, -> do
diff --git a/app/models/project_services/drone_ci_service.rb b/app/models/project_services/drone_ci_service.rb
index cd55194e29134fbcab548c818f4632941f1e9cf0..2717c240f05192034f3e43bd2d9b0aa4bc1a037e 100644
--- a/app/models/project_services/drone_ci_service.rb
+++ b/app/models/project_services/drone_ci_service.rb
@@ -114,7 +114,7 @@ class DroneCiService < CiService
   end
 
   def merge_request_valid?(data)
-    ['opened', 'reopened'].include?(data[:object_attributes][:state]) &&
+    %w(opened reopened).include?(data[:object_attributes][:state]) &&
       data[:object_attributes][:merge_status] == 'unchecked'
   end
 end
diff --git a/app/models/project_services/hipchat_service.rb b/app/models/project_services/hipchat_service.rb
index 3fdcee26bf3eeb749ab106f83f04db52c265bf1c..c4142c38b2f4fe809087169b94d909afad607811 100644
--- a/app/models/project_services/hipchat_service.rb
+++ b/app/models/project_services/hipchat_service.rb
@@ -36,7 +36,7 @@ class HipchatService < Service
       { type: 'text', name: 'token',     placeholder: 'Room token' },
       { type: 'text', name: 'room',      placeholder: 'Room name or ID' },
       { type: 'checkbox', name: 'notify' },
-      { type: 'select', name: 'color', choices: ['yellow', 'red', 'green', 'purple', 'gray', 'random'] },
+      { type: 'select', name: 'color', choices: %w(yellow red green purple gray random) },
       { type: 'text', name: 'api_version',
         placeholder: 'Leave blank for default (v2)' },
       { type: 'text', name: 'server',
diff --git a/app/models/project_services/pushover_service.rb b/app/models/project_services/pushover_service.rb
index 508d3a5f2fabb123797bddb89a387fda88ec33c5..689bf03f4697ad7d210b314a5d9332978d829e08 100644
--- a/app/models/project_services/pushover_service.rb
+++ b/app/models/project_services/pushover_service.rb
@@ -34,19 +34,19 @@ class PushoverService < Service
         [
           ['Device default sound', nil],
           ['Pushover (default)', 'pushover'],
-          ['Bike', 'bike'],
-          ['Bugle', 'bugle'],
+          %w(Bike bike),
+          %w(Bugle bugle),
           ['Cash Register', 'cashregister'],
-          ['Classical', 'classical'],
-          ['Cosmic', 'cosmic'],
-          ['Falling', 'falling'],
-          ['Gamelan', 'gamelan'],
-          ['Incoming', 'incoming'],
-          ['Intermission', 'intermission'],
-          ['Magic', 'magic'],
-          ['Mechanical', 'mechanical'],
+          %w(Classical classical),
+          %w(Cosmic cosmic),
+          %w(Falling falling),
+          %w(Gamelan gamelan),
+          %w(Incoming incoming),
+          %w(Intermission intermission),
+          %w(Magic magic),
+          %w(Mechanical mechanical),
           ['Piano Bar', 'pianobar'],
-          ['Siren', 'siren'],
+          %w(Siren siren),
           ['Space Alarm', 'spacealarm'],
           ['Tug Boat', 'tugboat'],
           ['Alien Alarm (long)', 'alien'],
diff --git a/app/services/projects/download_service.rb b/app/services/projects/download_service.rb
index 3948df955ed806faa3f28c5b39b28f479480ea30..604747e39d0ad076634a1d76f0709a76a0fbc833 100644
--- a/app/services/projects/download_service.rb
+++ b/app/services/projects/download_service.rb
@@ -25,7 +25,7 @@ module Projects
     end
 
     def http?(url)
-      url =~ /\A#{URI.regexp(['http', 'https'])}\z/
+      url =~ /\A#{URI.regexp(%w(http https))}\z/
     end
 
     def valid_domain?(url)
diff --git a/config/initializers/health_check.rb b/config/initializers/health_check.rb
index 4c91a61fb4a77ef627873749d912d516410dc947..959daa93f78c629bf7c93749c824eec0ca0eb325 100644
--- a/config/initializers/health_check.rb
+++ b/config/initializers/health_check.rb
@@ -1,4 +1,4 @@
 HealthCheck.setup do |config|
-  config.standard_checks = ['database', 'migrations', 'cache']
-  config.full_checks = ['database', 'migrations', 'cache']
+  config.standard_checks = %w(database migrations cache)
+  config.full_checks = %w(database migrations cache)
 end
diff --git a/config/initializers/metrics.rb b/config/initializers/metrics.rb
index 2dcaaa09242b1d0116ed0417260b588969f2d33d..76ce7479a41d0708d4082ab5389b1e62af797be6 100644
--- a/config/initializers/metrics.rb
+++ b/config/initializers/metrics.rb
@@ -20,13 +20,13 @@ def instrument_classes(instrumentation)
 
   # Path to search => prefix to strip from constant
   paths_to_instrument = {
-    ['app', 'finders']                    => ['app', 'finders'],
-    ['app', 'mailers', 'emails']          => ['app', 'mailers'],
-    ['app', 'services', '**']             => ['app', 'services'],
-    ['lib', 'gitlab', 'conflicts']        => ['lib'],
-    ['lib', 'gitlab', 'diff']             => ['lib'],
-    ['lib', 'gitlab', 'email', 'message'] => ['lib'],
-    ['lib', 'gitlab', 'checks']           => ['lib']
+    %w(app finders)                    => %w(app finders),
+    %w(app mailers emails)          => %w(app mailers),
+    ['app', 'services', '**']             => %w(app services),
+    %w(lib gitlab conflicts)        => ['lib'],
+    %w(lib gitlab diff)             => ['lib'],
+    %w(lib gitlab email message) => ['lib'],
+    %w(lib gitlab checks)           => ['lib']
   }
 
   paths_to_instrument.each do |(path, prefix)|
diff --git a/db/migrate/20161128142110_remove_unnecessary_indexes.rb b/db/migrate/20161128142110_remove_unnecessary_indexes.rb
index 9deab19782e01277768c5cc4d2e3d3b1e59dfecd..8100287ef48b1d7030233e834394b651d055c985 100644
--- a/db/migrate/20161128142110_remove_unnecessary_indexes.rb
+++ b/db/migrate/20161128142110_remove_unnecessary_indexes.rb
@@ -12,7 +12,7 @@ class RemoveUnnecessaryIndexes < ActiveRecord::Migration
     remove_index :award_emoji, column: :user_id if index_exists?(:award_emoji, :user_id)
     remove_index :ci_builds, column: :commit_id if index_exists?(:ci_builds, :commit_id)
     remove_index :deployments, column: :project_id if index_exists?(:deployments, :project_id)
-    remove_index :deployments, column: ["project_id", "environment_id"] if index_exists?(:deployments, ["project_id", "environment_id"])
+    remove_index :deployments, column: %w(project_id environment_id) if index_exists?(:deployments, %w(project_id environment_id))
     remove_index :lists, column: :board_id if index_exists?(:lists, :board_id)
     remove_index :milestones, column: :project_id if index_exists?(:milestones, :project_id)
     remove_index :notes, column: :project_id if index_exists?(:notes, :project_id)
@@ -24,7 +24,7 @@ class RemoveUnnecessaryIndexes < ActiveRecord::Migration
     add_concurrent_index :award_emoji, :user_id
     add_concurrent_index :ci_builds, :commit_id
     add_concurrent_index :deployments, :project_id
-    add_concurrent_index :deployments, ["project_id", "environment_id"]
+    add_concurrent_index :deployments, %w(project_id environment_id)
     add_concurrent_index :lists, :board_id
     add_concurrent_index :milestones, :project_id
     add_concurrent_index :notes, :project_id
diff --git a/features/steps/project/builds/artifacts.rb b/features/steps/project/builds/artifacts.rb
index 055fca036d3014c49d657deee90dcd1a38923cba..be0f6eee55a69279d45804dfd6dd30807165572e 100644
--- a/features/steps/project/builds/artifacts.rb
+++ b/features/steps/project/builds/artifacts.rb
@@ -76,7 +76,7 @@ class Spinach::Features::ProjectBuildsArtifacts < Spinach::FeatureSteps
     base64_params = send_data.sub(/\Aartifacts\-entry:/, '')
     params = JSON.parse(Base64.urlsafe_decode64(base64_params))
 
-    expect(params.keys).to eq(['Archive', 'Entry'])
+    expect(params.keys).to eq(%w(Archive Entry))
     expect(params['Archive']).to end_with('build_artifacts.zip')
     expect(params['Entry']).to eq(Base64.encode64('ci_artifacts.txt'))
   end
diff --git a/lib/api/commit_statuses.rb b/lib/api/commit_statuses.rb
index 0b6076bd28c3a786de7e4c860e3bd5feead27974..dba0831664ca43a4b922bb978410b467aab66d63 100644
--- a/lib/api/commit_statuses.rb
+++ b/lib/api/commit_statuses.rb
@@ -40,7 +40,7 @@ module API
         requires :id,          type: String,  desc: 'The ID of a project'
         requires :sha,         type: String,  desc: 'The commit hash'
         requires :state,       type: String,  desc: 'The state of the status',
-                               values: ['pending', 'running', 'success', 'failed', 'canceled']
+                               values: %w(pending running success failed canceled)
         optional :ref,         type: String,  desc: 'The ref'
         optional :target_url,  type: String,  desc: 'The target URL to associate with this status'
         optional :description, type: String,  desc: 'A short description of the status'
diff --git a/lib/api/commits.rb b/lib/api/commits.rb
index 0cd817f935262edd31fcd4771c1af3041dd335e8..9ce396d466020224011266d1b101f4682880fc7a 100644
--- a/lib/api/commits.rb
+++ b/lib/api/commits.rb
@@ -157,7 +157,7 @@ module API
         optional :path, type: String, desc: 'The file path'
         given :path do
           requires :line, type: Integer, desc: 'The line number'
-          requires :line_type, type: String, values: ['new', 'old'], default: 'new', desc: 'The type of the line'
+          requires :line_type, type: String, values: %w(new old), default: 'new', desc: 'The type of the line'
         end
       end
       post ':id/repository/commits/:sha/comments' do
diff --git a/lib/api/pipelines.rb b/lib/api/pipelines.rb
index f59f79591738ca96d26d094bcbf2d0777dca676c..3afc1e385fe5afa16f3a363e96076e4339119514 100644
--- a/lib/api/pipelines.rb
+++ b/lib/api/pipelines.rb
@@ -14,7 +14,7 @@ module API
       end
       params do
         use :pagination
-        optional :scope,    type: String, values: ['running', 'branches', 'tags'],
+        optional :scope,    type: String, values: %w(running branches tags),
                             desc: 'Either running, branches, or tags'
       end
       get ':id/pipelines' do
diff --git a/lib/api/runners.rb b/lib/api/runners.rb
index 4fbd40965335740718b7ac352b879e6456f81cea..252e59bfa58869b429b444ffd7ff79c83c6e6b5e 100644
--- a/lib/api/runners.rb
+++ b/lib/api/runners.rb
@@ -14,7 +14,7 @@ module API
         use :pagination
       end
       get do
-        runners = filter_runners(current_user.ci_authorized_runners, params[:scope], without: ['specific', 'shared'])
+        runners = filter_runners(current_user.ci_authorized_runners, params[:scope], without: %w(specific shared))
         present paginate(runners), with: Entities::Runner
       end
 
diff --git a/lib/api/v3/commits.rb b/lib/api/v3/commits.rb
index 477e22fd25e80421ff8eb6ae3bf3b224b10890d4..126cc95fc3d63b60a345603b4d40885e7c31288d 100644
--- a/lib/api/v3/commits.rb
+++ b/lib/api/v3/commits.rb
@@ -162,7 +162,7 @@ module API
           optional :path, type: String, desc: 'The file path'
           given :path do
             requires :line, type: Integer, desc: 'The line number'
-            requires :line_type, type: String, values: ['new', 'old'], default: 'new', desc: 'The type of the line'
+            requires :line_type, type: String, values: %w(new old), default: 'new', desc: 'The type of the line'
           end
         end
         post ':id/repository/commits/:sha/comments' do
diff --git a/lib/ci/api/helpers.rb b/lib/ci/api/helpers.rb
index a2e6387dbe5cf8aed5285345353c84371d2afb5d..996990b464f805c0859036cfaeee9bc8036d161c 100644
--- a/lib/ci/api/helpers.rb
+++ b/lib/ci/api/helpers.rb
@@ -73,7 +73,7 @@ module Ci
 
       def get_runner_version_from_params
         return unless params["info"].present?
-        attributes_for_keys(["name", "version", "revision", "platform", "architecture"], params["info"])
+        attributes_for_keys(%w(name version revision platform architecture), params["info"])
       end
 
       def max_artifacts_size
diff --git a/lib/gitlab/template/gitlab_ci_yml_template.rb b/lib/gitlab/template/gitlab_ci_yml_template.rb
index 9d2ecee97569583d91eaa9c5659c789b45e5e097..fd040148a1e0c40da561e6a731b3d9aaa8200135 100644
--- a/lib/gitlab/template/gitlab_ci_yml_template.rb
+++ b/lib/gitlab/template/gitlab_ci_yml_template.rb
@@ -28,7 +28,7 @@ module Gitlab
         end
 
         def dropdown_names(context)
-          categories = context == 'autodeploy' ? ['Auto deploy'] : ['General', 'Pages']
+          categories = context == 'autodeploy' ? ['Auto deploy'] : %w(General Pages)
           super().slice(*categories)
         end
       end
diff --git a/lib/gitlab/url_sanitizer.rb b/lib/gitlab/url_sanitizer.rb
index 19dad699edf4c50de81690add1b0e64dd790e6b7..1f0d96088cfd3e88fe79ab64fac23a9764c3352c 100644
--- a/lib/gitlab/url_sanitizer.rb
+++ b/lib/gitlab/url_sanitizer.rb
@@ -1,7 +1,7 @@
 module Gitlab
   class UrlSanitizer
     def self.sanitize(content)
-      regexp = URI::Parser.new.make_regexp(['http', 'https', 'ssh', 'git'])
+      regexp = URI::Parser.new.make_regexp(%w(http https ssh git))
 
       content.gsub(regexp) { |url| new(url).masked_url }
     rescue Addressable::URI::InvalidURIError
diff --git a/spec/controllers/profiles/personal_access_tokens_spec.rb b/spec/controllers/profiles/personal_access_tokens_spec.rb
index 45534a3a5875abf205c55a853f753bf66024a5b8..9d5f4c99f6dce358cd134b4caf392a84d3d560bb 100644
--- a/spec/controllers/profiles/personal_access_tokens_spec.rb
+++ b/spec/controllers/profiles/personal_access_tokens_spec.rb
@@ -32,10 +32,10 @@ describe Profiles::PersonalAccessTokensController do
 
     context "scopes" do
       it "allows creation of a token with scopes" do
-        post :create, personal_access_token: { name: FFaker::Product.brand, scopes: ['api', 'read_user'] }
+        post :create, personal_access_token: { name: FFaker::Product.brand, scopes: %w(api read_user) }
 
         expect(created_token).not_to be_nil
-        expect(created_token.scopes).to eq(['api', 'read_user'])
+        expect(created_token.scopes).to eq(%w(api read_user))
       end
 
       it "allows creation of a token with no scopes" do
diff --git a/spec/controllers/projects/merge_requests_controller_spec.rb b/spec/controllers/projects/merge_requests_controller_spec.rb
index c059038f9f25ef2d5ceb40d61f8ac214bf7d0476..e6a8b9f66182d8f6c4cd0abba2772aafaae56d7b 100644
--- a/spec/controllers/projects/merge_requests_controller_spec.rb
+++ b/spec/controllers/projects/merge_requests_controller_spec.rb
@@ -773,7 +773,7 @@ describe Projects::MergeRequestsController do
 
             section['lines'].each do |line|
               if section['conflict']
-                expect(line['type']).to be_in(['old', 'new'])
+                expect(line['type']).to be_in(%w(old new))
                 expect(line.values_at('old_line', 'new_line')).to contain_exactly(nil, a_kind_of(Integer))
               else
                 if line['type'].nil?
diff --git a/spec/features/issues/bulk_assignment_labels_spec.rb b/spec/features/issues/bulk_assignment_labels_spec.rb
index 832757b24d4f6fd71dee14fbf6346ec67e5e61cf..2f59630b4fbbac895a15249200a8c234931c4bda 100644
--- a/spec/features/issues/bulk_assignment_labels_spec.rb
+++ b/spec/features/issues/bulk_assignment_labels_spec.rb
@@ -55,7 +55,7 @@ feature 'Issues > Labels bulk assignment', feature: true do
         context 'to all issues' do
           before do
             check 'check_all_issues'
-            open_labels_dropdown ['bug', 'feature']
+            open_labels_dropdown %w(bug feature)
             update_issues
           end
 
@@ -70,7 +70,7 @@ feature 'Issues > Labels bulk assignment', feature: true do
         context 'to a issue' do
           before do
             check "selected_issue_#{issue1.id}"
-            open_labels_dropdown ['bug', 'feature']
+            open_labels_dropdown %w(bug feature)
             update_issues
           end
 
@@ -112,7 +112,7 @@ feature 'Issues > Labels bulk assignment', feature: true do
           visit namespace_project_issues_path(project.namespace, project)
 
           check 'check_all_issues'
-          unmark_labels_in_dropdown ['bug', 'feature']
+          unmark_labels_in_dropdown %w(bug feature)
           update_issues
         end
 
diff --git a/spec/features/issues_spec.rb b/spec/features/issues_spec.rb
index ed3826bd46e15abf651eb7b1698e18fd046cd088..1e0db4a0499ce27abb8633485b9a5960d987d38c 100644
--- a/spec/features/issues_spec.rb
+++ b/spec/features/issues_spec.rb
@@ -150,7 +150,7 @@ describe 'Issues', feature: true do
 
   describe 'Filter issue' do
     before do
-      ['foobar', 'barbaz', 'gitlab'].each do |title|
+      %w(foobar barbaz gitlab).each do |title|
         create(:issue,
                author: @user,
                assignee: @user,
diff --git a/spec/features/projects/labels/issues_sorted_by_priority_spec.rb b/spec/features/projects/labels/issues_sorted_by_priority_spec.rb
index 81b0c991d4fb586513d054f0c31392b76815ca81..7414ce21f59eff539b959b01cb26b54e33dc4dcf 100644
--- a/spec/features/projects/labels/issues_sorted_by_priority_spec.rb
+++ b/spec/features/projects/labels/issues_sorted_by_priority_spec.rb
@@ -37,7 +37,7 @@ feature 'Issue prioritization', feature: true do
       page.within('.issues-holder') do
         issue_titles = all('.issues-list .issue-title-text').map(&:text)
 
-        expect(issue_titles).to eq(['issue_4', 'issue_3', 'issue_5', 'issue_2', 'issue_1'])
+        expect(issue_titles).to eq(%w(issue_4 issue_3 issue_5 issue_2 issue_1))
       end
     end
   end
@@ -77,7 +77,7 @@ feature 'Issue prioritization', feature: true do
 
         expect(issue_titles[0..1]).to contain_exactly('issue_5', 'issue_8')
         expect(issue_titles[2..4]).to contain_exactly('issue_1', 'issue_3', 'issue_7')
-        expect(issue_titles[5..-1]).to eq(['issue_2', 'issue_4', 'issue_6'])
+        expect(issue_titles[5..-1]).to eq(%w(issue_2 issue_4 issue_6))
       end
     end
   end
diff --git a/spec/helpers/auth_helper_spec.rb b/spec/helpers/auth_helper_spec.rb
index 49ea4fa6d3e18c1c508f831ed8b1a40a813a54d4..cd3281d6f5183893549dd80afab6ee251dc06c37 100644
--- a/spec/helpers/auth_helper_spec.rb
+++ b/spec/helpers/auth_helper_spec.rb
@@ -55,7 +55,7 @@ describe AuthHelper do
     context 'all the button based providers are disabled via application_setting' do
       it 'returns false' do
         stub_application_setting(
-          disabled_oauth_sign_in_sources: ['github', 'twitter']
+          disabled_oauth_sign_in_sources: %w(github twitter)
         )
 
         expect(helper.button_based_providers_enabled?).to be false
diff --git a/spec/helpers/issuables_helper_spec.rb b/spec/helpers/issuables_helper_spec.rb
index 69e30913d1c248d25a31963135da4d33301878ed..f3bbb539d2bc45716a8404e6487f48f44cdc0f11 100644
--- a/spec/helpers/issuables_helper_spec.rb
+++ b/spec/helpers/issuables_helper_spec.rb
@@ -51,7 +51,7 @@ describe IssuablesHelper do
           utf8: '✓',
           author_id: '11',
           assignee_id: '18',
-          label_name: ['bug', 'discussion', 'documentation'],
+          label_name: %w(bug discussion documentation),
           milestone_title: 'v4.0',
           sort: 'due_date_asc',
           namespace_id: 'gitlab-org',
diff --git a/spec/helpers/issues_helper_spec.rb b/spec/helpers/issues_helper_spec.rb
index 5a466e3f7435e9065b6c56cb76ab351d486329bb..b61cebe6c8a98d0e8bfa4027e27729ef93dfa945 100644
--- a/spec/helpers/issues_helper_spec.rb
+++ b/spec/helpers/issues_helper_spec.rb
@@ -113,7 +113,7 @@ describe IssuesHelper do
   describe "awards_sort" do
     it "sorts a hash so thumbsup and thumbsdown are always on top" do
       data = { "thumbsdown" => "some value", "lifter" => "some value", "thumbsup" => "some value" }
-      expect(awards_sort(data).keys).to eq(["thumbsup", "thumbsdown", "lifter"])
+      expect(awards_sort(data).keys).to eq(%w(thumbsup thumbsdown lifter))
     end
   end
 
diff --git a/spec/lib/bitbucket/collection_spec.rb b/spec/lib/bitbucket/collection_spec.rb
index 015a7f80e03441d932696ff7f530c5e37f698d96..9008cb3e87025af3ab0e126cc5845c7b1af03a06 100644
--- a/spec/lib/bitbucket/collection_spec.rb
+++ b/spec/lib/bitbucket/collection_spec.rb
@@ -19,6 +19,6 @@ describe Bitbucket::Collection do
   it "iterates paginator" do
     collection = described_class.new(TestPaginator.new)
 
-    expect(collection.to_a).to match(["result_1_page_1", "result_2_page_1", "result_1_page_2", "result_2_page_2"])
+    expect(collection.to_a).to match(%w(result_1_page_1 result_2_page_1 result_1_page_2 result_2_page_2))
   end
 end
diff --git a/spec/lib/bitbucket/representation/repo_spec.rb b/spec/lib/bitbucket/representation/repo_spec.rb
index d92282301453a0b9c7cdd8169e4f6eda8967ee54..405265cc6691077625ab89556742e310a416827c 100644
--- a/spec/lib/bitbucket/representation/repo_spec.rb
+++ b/spec/lib/bitbucket/representation/repo_spec.rb
@@ -29,7 +29,7 @@ describe Bitbucket::Representation::Repo do
   end
 
   describe '#owner_and_slug' do
-    it { expect(described_class.new({ 'full_name' => 'ben/test' }).owner_and_slug).to eq(['ben', 'test']) }
+    it { expect(described_class.new({ 'full_name' => 'ben/test' }).owner_and_slug).to eq(%w(ben test)) }
   end
 
   describe '#owner' do
diff --git a/spec/lib/ci/gitlab_ci_yaml_processor_spec.rb b/spec/lib/ci/gitlab_ci_yaml_processor_spec.rb
index a1bde4a05183eb9889bccac84088aebfa3bce1af..7145f0da1d31ddd590baf2d0f7f0ff1f32bf1014 100644
--- a/spec/lib/ci/gitlab_ci_yaml_processor_spec.rb
+++ b/spec/lib/ci/gitlab_ci_yaml_processor_spec.rb
@@ -96,7 +96,7 @@ module Ci
         it "returns builds if only has a list of branches including specified" do
           config = YAML.dump({
                                before_script: ["pwd"],
-                               rspec: { script: "rspec", type: type, only: ["master", "deploy"] }
+                               rspec: { script: "rspec", type: type, only: %w(master deploy) }
                              })
 
           config_processor = GitlabCiYamlProcessor.new(config, path)
@@ -173,8 +173,8 @@ module Ci
         it "returns build only for specified type" do
           config = YAML.dump({
                                before_script: ["pwd"],
-                               rspec: { script: "rspec", type: "test", only: ["master", "deploy"] },
-                               staging: { script: "deploy", type: "deploy", only: ["master", "deploy"] },
+                               rspec: { script: "rspec", type: "test", only: %w(master deploy) },
+                               staging: { script: "deploy", type: "deploy", only: %w(master deploy) },
                                production: { script: "deploy", type: "deploy", only: ["master@path", "deploy"] },
                              })
 
@@ -252,7 +252,7 @@ module Ci
         it "does not return builds if except has a list of branches including specified" do
           config = YAML.dump({
                                before_script: ["pwd"],
-                               rspec: { script: "rspec", type: type, except: ["master", "deploy"] }
+                               rspec: { script: "rspec", type: type, except: %w(master deploy) }
                              })
 
           config_processor = GitlabCiYamlProcessor.new(config, path)
@@ -580,7 +580,7 @@ module Ci
         context 'when syntax is incorrect' do
           context 'when variables defined but invalid' do
             let(:variables) do
-              ['VAR1', 'value1', 'VAR2', 'value2']
+              %w(VAR1 value1 VAR2 value2)
             end
 
             it 'raises error' do
@@ -909,7 +909,7 @@ module Ci
       end
 
       context 'dependencies to builds' do
-        let(:dependencies) { ['build1', 'build2'] }
+        let(:dependencies) { %w(build1 build2) }
 
         it { expect { subject }.not_to raise_error }
       end
@@ -1215,7 +1215,7 @@ EOT
       end
 
       it "returns errors if job stage is not a defined stage" do
-        config = YAML.dump({ types: ["build", "test"], rspec: { script: "test", type: "acceptance" } })
+        config = YAML.dump({ types: %w(build test), rspec: { script: "test", type: "acceptance" } })
         expect do
           GitlabCiYamlProcessor.new(config, path)
         end.to raise_error(GitlabCiYamlProcessor::ValidationError, "rspec job: stage parameter should be build, test")
@@ -1257,42 +1257,42 @@ EOT
       end
 
       it "returns errors if job artifacts:name is not an a string" do
-        config = YAML.dump({ types: ["build", "test"], rspec: { script: "test", artifacts: { name: 1 } } })
+        config = YAML.dump({ types: %w(build test), rspec: { script: "test", artifacts: { name: 1 } } })
         expect do
           GitlabCiYamlProcessor.new(config)
         end.to raise_error(GitlabCiYamlProcessor::ValidationError, "jobs:rspec:artifacts name should be a string")
       end
 
       it "returns errors if job artifacts:when is not an a predefined value" do
-        config = YAML.dump({ types: ["build", "test"], rspec: { script: "test", artifacts: { when: 1 } } })
+        config = YAML.dump({ types: %w(build test), rspec: { script: "test", artifacts: { when: 1 } } })
         expect do
           GitlabCiYamlProcessor.new(config)
         end.to raise_error(GitlabCiYamlProcessor::ValidationError, "jobs:rspec:artifacts when should be on_success, on_failure or always")
       end
 
       it "returns errors if job artifacts:expire_in is not an a string" do
-        config = YAML.dump({ types: ["build", "test"], rspec: { script: "test", artifacts: { expire_in: 1 } } })
+        config = YAML.dump({ types: %w(build test), rspec: { script: "test", artifacts: { expire_in: 1 } } })
         expect do
           GitlabCiYamlProcessor.new(config)
         end.to raise_error(GitlabCiYamlProcessor::ValidationError, "jobs:rspec:artifacts expire in should be a duration")
       end
 
       it "returns errors if job artifacts:expire_in is not an a valid duration" do
-        config = YAML.dump({ types: ["build", "test"], rspec: { script: "test", artifacts: { expire_in: "7 elephants" } } })
+        config = YAML.dump({ types: %w(build test), rspec: { script: "test", artifacts: { expire_in: "7 elephants" } } })
         expect do
           GitlabCiYamlProcessor.new(config)
         end.to raise_error(GitlabCiYamlProcessor::ValidationError, "jobs:rspec:artifacts expire in should be a duration")
       end
 
       it "returns errors if job artifacts:untracked is not an array of strings" do
-        config = YAML.dump({ types: ["build", "test"], rspec: { script: "test", artifacts: { untracked: "string" } } })
+        config = YAML.dump({ types: %w(build test), rspec: { script: "test", artifacts: { untracked: "string" } } })
         expect do
           GitlabCiYamlProcessor.new(config)
         end.to raise_error(GitlabCiYamlProcessor::ValidationError, "jobs:rspec:artifacts untracked should be a boolean value")
       end
 
       it "returns errors if job artifacts:paths is not an array of strings" do
-        config = YAML.dump({ types: ["build", "test"], rspec: { script: "test", artifacts: { paths: "string" } } })
+        config = YAML.dump({ types: %w(build test), rspec: { script: "test", artifacts: { paths: "string" } } })
         expect do
           GitlabCiYamlProcessor.new(config)
         end.to raise_error(GitlabCiYamlProcessor::ValidationError, "jobs:rspec:artifacts paths should be an array of strings")
@@ -1320,28 +1320,28 @@ EOT
       end
 
       it "returns errors if job cache:key is not an a string" do
-        config = YAML.dump({ types: ["build", "test"], rspec: { script: "test", cache: { key: 1 } } })
+        config = YAML.dump({ types: %w(build test), rspec: { script: "test", cache: { key: 1 } } })
         expect do
           GitlabCiYamlProcessor.new(config)
         end.to raise_error(GitlabCiYamlProcessor::ValidationError, "jobs:rspec:cache:key config should be a string or symbol")
       end
 
       it "returns errors if job cache:untracked is not an array of strings" do
-        config = YAML.dump({ types: ["build", "test"], rspec: { script: "test", cache: { untracked: "string" } } })
+        config = YAML.dump({ types: %w(build test), rspec: { script: "test", cache: { untracked: "string" } } })
         expect do
           GitlabCiYamlProcessor.new(config)
         end.to raise_error(GitlabCiYamlProcessor::ValidationError, "jobs:rspec:cache:untracked config should be a boolean value")
       end
 
       it "returns errors if job cache:paths is not an array of strings" do
-        config = YAML.dump({ types: ["build", "test"], rspec: { script: "test", cache: { paths: "string" } } })
+        config = YAML.dump({ types: %w(build test), rspec: { script: "test", cache: { paths: "string" } } })
         expect do
           GitlabCiYamlProcessor.new(config)
         end.to raise_error(GitlabCiYamlProcessor::ValidationError, "jobs:rspec:cache:paths config should be an array of strings")
       end
 
       it "returns errors if job dependencies is not an array of strings" do
-        config = YAML.dump({ types: ["build", "test"], rspec: { script: "test", dependencies: "string" } })
+        config = YAML.dump({ types: %w(build test), rspec: { script: "test", dependencies: "string" } })
         expect do
           GitlabCiYamlProcessor.new(config)
         end.to raise_error(GitlabCiYamlProcessor::ValidationError, "jobs:rspec dependencies should be an array of strings")
diff --git a/spec/lib/extracts_path_spec.rb b/spec/lib/extracts_path_spec.rb
index 78ac4da8dfed403cb6cf48d934aad4a38311c196..27f4a96832144e004518e75f19bf3c913340abb6 100644
--- a/spec/lib/extracts_path_spec.rb
+++ b/spec/lib/extracts_path_spec.rb
@@ -177,12 +177,12 @@ describe ExtractsPath, lib: true do
 
       it "extracts a valid commit SHA" do
         expect(extract_ref('f4b14494ef6abf3d144c28e4af0c20143383e062/CHANGELOG')).to eq(
-          ['f4b14494ef6abf3d144c28e4af0c20143383e062', 'CHANGELOG']
+          %w(f4b14494ef6abf3d144c28e4af0c20143383e062 CHANGELOG)
         )
       end
 
       it "falls back to a primitive split for an invalid ref" do
-        expect(extract_ref('stable/CHANGELOG')).to eq(['stable', 'CHANGELOG'])
+        expect(extract_ref('stable/CHANGELOG')).to eq(%w(stable CHANGELOG))
       end
     end
   end
diff --git a/spec/lib/gitlab/ci/config/entry/commands_spec.rb b/spec/lib/gitlab/ci/config/entry/commands_spec.rb
index b8b0825a1c7f5323d60e48050633313b8ca78d32..afa4a089418ebaf3aa12aa1bcf1c329d8f94e008 100644
--- a/spec/lib/gitlab/ci/config/entry/commands_spec.rb
+++ b/spec/lib/gitlab/ci/config/entry/commands_spec.rb
@@ -4,7 +4,7 @@ describe Gitlab::Ci::Config::Entry::Commands do
   let(:entry) { described_class.new(config) }
 
   context 'when entry config value is an array' do
-    let(:config) { ['ls', 'pwd'] }
+    let(:config) { %w(ls pwd) }
 
     describe '#value' do
       it 'returns array of strings' do
diff --git a/spec/lib/gitlab/ci/config/entry/factory_spec.rb b/spec/lib/gitlab/ci/config/entry/factory_spec.rb
index 00dad5d959131925df823fa8b56312b838c2e3f1..3395b3c645b3ad308c6cb466c3bc0e3a14812d5a 100644
--- a/spec/lib/gitlab/ci/config/entry/factory_spec.rb
+++ b/spec/lib/gitlab/ci/config/entry/factory_spec.rb
@@ -8,20 +8,20 @@ describe Gitlab::Ci::Config::Entry::Factory do
     context 'when setting a concrete value' do
       it 'creates entry with valid value' do
         entry = factory
-          .value(['ls', 'pwd'])
+          .value(%w(ls pwd))
           .create!
 
-        expect(entry.value).to eq ['ls', 'pwd']
+        expect(entry.value).to eq %w(ls pwd)
       end
 
       context 'when setting description' do
         it 'creates entry with description' do
           entry = factory
-            .value(['ls', 'pwd'])
+            .value(%w(ls pwd))
             .with(description: 'test description')
             .create!
 
-          expect(entry.value).to eq ['ls', 'pwd']
+          expect(entry.value).to eq %w(ls pwd)
           expect(entry.description).to eq 'test description'
         end
       end
@@ -29,7 +29,7 @@ describe Gitlab::Ci::Config::Entry::Factory do
       context 'when setting key' do
         it 'creates entry with custom key' do
           entry = factory
-            .value(['ls', 'pwd'])
+            .value(%w(ls pwd))
             .with(key: 'test key')
             .create!
 
diff --git a/spec/lib/gitlab/ci/config/entry/global_spec.rb b/spec/lib/gitlab/ci/config/entry/global_spec.rb
index 8a74743eda8d3f45fb10c1d863f37c84f337beed..d9e487159842c18a5f2e37ab8227882b149b3c56 100644
--- a/spec/lib/gitlab/ci/config/entry/global_spec.rb
+++ b/spec/lib/gitlab/ci/config/entry/global_spec.rb
@@ -21,12 +21,12 @@ describe Gitlab::Ci::Config::Entry::Global do
   context 'when configuration is valid' do
     context 'when some entries defined' do
       let(:hash) do
-        { before_script: ['ls', 'pwd'],
+        { before_script: %w(ls pwd),
           image: 'ruby:2.2',
           services: ['postgres:9.1', 'mysql:5.5'],
           variables: { VAR: 'value' },
           after_script: ['make clean'],
-          stages: ['build', 'pages'],
+          stages: %w(build pages),
           cache: { key: 'k', untracked: true, paths: ['public/'] },
           rspec: { script: %w[rspec ls] },
           spinach: { before_script: [], variables: {}, script: 'spinach' } }
@@ -89,7 +89,7 @@ describe Gitlab::Ci::Config::Entry::Global do
 
         describe '#before_script_value' do
           it 'returns correct script' do
-            expect(global.before_script_value).to eq ['ls', 'pwd']
+            expect(global.before_script_value).to eq %w(ls pwd)
           end
         end
 
@@ -126,7 +126,7 @@ describe Gitlab::Ci::Config::Entry::Global do
 
           context 'when deprecated types key defined' do
             let(:hash) do
-              { types: ['test', 'deploy'],
+              { types: %w(test deploy),
                 rspec: { script: 'rspec' } }
             end
 
@@ -148,7 +148,7 @@ describe Gitlab::Ci::Config::Entry::Global do
             expect(global.jobs_value).to eq(
               rspec: { name: :rspec,
                        script: %w[rspec ls],
-                       before_script: ['ls', 'pwd'],
+                       before_script: %w(ls pwd),
                        commands: "ls\npwd\nrspec\nls",
                        image: 'ruby:2.2',
                        services: ['postgres:9.1', 'mysql:5.5'],
diff --git a/spec/lib/gitlab/ci/config/entry/script_spec.rb b/spec/lib/gitlab/ci/config/entry/script_spec.rb
index aa99cee26905fe3cbbd8ee9fbd53a83d5c16466e..069eaa264227915ab436a90e6362f630876d640b 100644
--- a/spec/lib/gitlab/ci/config/entry/script_spec.rb
+++ b/spec/lib/gitlab/ci/config/entry/script_spec.rb
@@ -5,7 +5,7 @@ describe Gitlab::Ci::Config::Entry::Script do
 
   describe 'validations' do
     context 'when entry config value is correct' do
-      let(:config) { ['ls', 'pwd'] }
+      let(:config) { %w(ls pwd) }
 
       describe '#value' do
         it 'returns array of strings' do
diff --git a/spec/lib/gitlab/conflict/file_spec.rb b/spec/lib/gitlab/conflict/file_spec.rb
index 3a24aff7fa9f60828c09e9d00c016ee09ef478b0..b3e107dca7269a5084f1e812a3917d841125b287 100644
--- a/spec/lib/gitlab/conflict/file_spec.rb
+++ b/spec/lib/gitlab/conflict/file_spec.rb
@@ -44,7 +44,7 @@ describe Gitlab::Conflict::File, lib: true do
 
       it 'returns a file containing only the chosen parts of the resolved sections' do
         expect(resolved_lines.chunk { |line| line.type || 'both' }.map(&:first))
-          .to eq(['both', 'new', 'both', 'old', 'both', 'new', 'both'])
+          .to eq(%w(both new both old both new both))
       end
     end
 
@@ -123,7 +123,7 @@ describe Gitlab::Conflict::File, lib: true do
     it 'sets conflict to true for sections with only changed lines' do
       conflict_file.sections.select { |section| section[:conflict] }.each do |section|
         section[:lines].each do |line|
-          expect(line.type).to be_in(['new', 'old'])
+          expect(line.type).to be_in(%w(new old))
         end
       end
     end
diff --git a/spec/lib/gitlab/git/blob_snippet_spec.rb b/spec/lib/gitlab/git/blob_snippet_spec.rb
index 79b1311ac916fdbb3d074e48dd2807719e213639..17d6be470aca5635eeb898c4414d96707ab81a86 100644
--- a/spec/lib/gitlab/git/blob_snippet_spec.rb
+++ b/spec/lib/gitlab/git/blob_snippet_spec.rb
@@ -11,7 +11,7 @@ describe Gitlab::Git::BlobSnippet, seed_helper: true do
     end
 
     context 'present lines' do
-      let(:snippet) { Gitlab::Git::BlobSnippet.new('master', ['wow', 'much'], 1, 'wow.rb') }
+      let(:snippet) { Gitlab::Git::BlobSnippet.new('master', %w(wow much), 1, 'wow.rb') }
 
       it { expect(snippet.data).to eq("wow\nmuch") }
     end
diff --git a/spec/lib/gitlab/git_access_spec.rb b/spec/lib/gitlab/git_access_spec.rb
index a55bd4387e0b20d6cb0169537b7e7f8d9d1e58cd..a12b4d393d7146c8f99942fbf536a2c0da8d1257 100644
--- a/spec/lib/gitlab/git_access_spec.rb
+++ b/spec/lib/gitlab/git_access_spec.rb
@@ -301,7 +301,7 @@ describe Gitlab::GitAccess, lib: true do
       }
     }
 
-    [['feature', 'exact'], ['feat*', 'wildcard']].each do |protected_branch_name, protected_branch_type|
+    [%w(feature exact), ['feat*', 'wildcard']].each do |protected_branch_name, protected_branch_type|
       context do
         before { create(:protected_branch, name: protected_branch_name, project: project) }
 
diff --git a/spec/lib/gitlab/import_export/attribute_configuration_spec.rb b/spec/lib/gitlab/import_export/attribute_configuration_spec.rb
index ea65a5dfed11a4c8e4446f5499717255a19d1c0d..e24d070706a746050dd66bd01706a3d9491a28aa 100644
--- a/spec/lib/gitlab/import_export/attribute_configuration_spec.rb
+++ b/spec/lib/gitlab/import_export/attribute_configuration_spec.rb
@@ -17,7 +17,7 @@ describe 'Import/Export attribute configuration', lib: true do
     # Remove duplicated or add missing models
     # - project is not part of the tree, so it has to be added manually.
     # - milestone, labels have both singular and plural versions in the tree, so remove the duplicates.
-    names.flatten.uniq - ['milestones', 'labels'] + ['project']
+    names.flatten.uniq - %w(milestones labels) + ['project']
   end
 
   let(:safe_attributes_file) { 'spec/lib/gitlab/import_export/safe_model_attributes.yml' }
diff --git a/spec/lib/gitlab/import_export/model_configuration_spec.rb b/spec/lib/gitlab/import_export/model_configuration_spec.rb
index 9b492d1b9c7b4a0e24c73ed84639b5d151588154..2ede5cdd2adbf7bd5fb415cdaa51f8526a71bba5 100644
--- a/spec/lib/gitlab/import_export/model_configuration_spec.rb
+++ b/spec/lib/gitlab/import_export/model_configuration_spec.rb
@@ -14,7 +14,7 @@ describe 'Import/Export model configuration', lib: true do
     # - project is not part of the tree, so it has to be added manually.
     # - milestone, labels have both singular and plural versions in the tree, so remove the duplicates.
     # - User, Author... Models we do not care about for checking models
-    names.flatten.uniq - ['milestones', 'labels', 'user', 'author'] + ['project']
+    names.flatten.uniq - %w(milestones labels user author) + ['project']
   end
 
   let(:all_models_yml) { 'spec/lib/gitlab/import_export/all_models.yml' }
diff --git a/spec/lib/gitlab/import_export/project_tree_saver_spec.rb b/spec/lib/gitlab/import_export/project_tree_saver_spec.rb
index 8579239f225acc453c82b93950e4332934280920..012c22ec5ad2ad6be93b1ce88abe29475f041d73 100644
--- a/spec/lib/gitlab/import_export/project_tree_saver_spec.rb
+++ b/spec/lib/gitlab/import_export/project_tree_saver_spec.rb
@@ -114,7 +114,7 @@ describe Gitlab::ImportExport::ProjectTreeSaver, services: true do
       it 'has project and group labels' do
         label_types = saved_project_json['issues'].first['label_links'].map { |link| link['label']['type'] }
 
-        expect(label_types).to match_array(['ProjectLabel', 'GroupLabel'])
+        expect(label_types).to match_array(%w(ProjectLabel GroupLabel))
       end
 
       it 'has priorities associated to labels' do
diff --git a/spec/lib/gitlab/import_sources_spec.rb b/spec/lib/gitlab/import_sources_spec.rb
index 8cea38e9ff85fd40f610a1b668c323ae1116cdfd..962af8bdf422c411800c384abd66c2889dd228d5 100644
--- a/spec/lib/gitlab/import_sources_spec.rb
+++ b/spec/lib/gitlab/import_sources_spec.rb
@@ -22,16 +22,15 @@ describe Gitlab::ImportSources do
   describe '.values' do
     it 'returns an array' do
       expected =
-        [
-          'github',
-          'bitbucket',
-          'gitlab',
-          'google_code',
-          'fogbugz',
-          'git',
-          'gitlab_project',
-          'gitea'
-        ]
+        %w(
+github 
+bitbucket 
+gitlab 
+google_code 
+fogbugz 
+git 
+gitlab_project 
+gitea)
 
       expect(described_class.values).to eq(expected)
     end
@@ -40,15 +39,14 @@ describe Gitlab::ImportSources do
   describe '.importer_names' do
     it 'returns an array of importer names' do
       expected =
-        [
-          'github',
-          'bitbucket',
-          'gitlab',
-          'google_code',
-          'fogbugz',
-          'gitlab_project',
-          'gitea'
-        ]
+        %w(
+github 
+bitbucket 
+gitlab 
+google_code 
+fogbugz 
+gitlab_project 
+gitea)
 
       expect(described_class.importer_names).to eq(expected)
     end
diff --git a/spec/lib/gitlab/ldap/auth_hash_spec.rb b/spec/lib/gitlab/ldap/auth_hash_spec.rb
index 69c49051156681ea80bb52c2e299706f68a4a696..7a2f774b9481cd9927d00b72b566e0a70e0aa64a 100644
--- a/spec/lib/gitlab/ldap/auth_hash_spec.rb
+++ b/spec/lib/gitlab/ldap/auth_hash_spec.rb
@@ -44,7 +44,7 @@ describe Gitlab::LDAP::AuthHash, lib: true do
   context "with overridden attributes" do
     let(:attributes) do
       {
-        'username'  => ['mail', 'email'],
+        'username'  => %w(mail email),
         'name'      => 'fullName'
       }
     end
diff --git a/spec/models/application_setting_spec.rb b/spec/models/application_setting_spec.rb
index b950fcdd81aae02426e796e1ac8193872ad84afa..4086e00e363f6bbab344a056defc616f0600c1d8 100644
--- a/spec/models/application_setting_spec.rb
+++ b/spec/models/application_setting_spec.rb
@@ -62,9 +62,9 @@ describe ApplicationSetting, models: true do
 
       describe 'inclusion' do
         it { is_expected.to allow_value('custom1').for(:repository_storages) }
-        it { is_expected.to allow_value(['custom2', 'custom3']).for(:repository_storages) }
+        it { is_expected.to allow_value(%w(custom2 custom3)).for(:repository_storages) }
         it { is_expected.not_to allow_value('alternative').for(:repository_storages) }
-        it { is_expected.not_to allow_value(['alternative', 'custom1']).for(:repository_storages) }
+        it { is_expected.not_to allow_value(%w(alternative custom1)).for(:repository_storages) }
       end
 
       describe 'presence' do
@@ -83,7 +83,7 @@ describe ApplicationSetting, models: true do
 
         describe '#repository_storage' do
           it 'returns the first storage' do
-            setting.repository_storages = ['good', 'bad']
+            setting.repository_storages = %w(good bad)
 
             expect(setting.repository_storage).to eq('good')
           end
diff --git a/spec/models/ci/build_spec.rb b/spec/models/ci/build_spec.rb
index 9a03485201b5e2dfeddc2afe668549ef15ee7322..355b8bf3af81aca7c81fedff6243cf232bf17b88 100644
--- a/spec/models/ci/build_spec.rb
+++ b/spec/models/ci/build_spec.rb
@@ -1420,7 +1420,7 @@ describe Ci::Build, :models do
     end
 
     context 'when runner is assigned to build' do
-      let(:runner) { create(:ci_runner, description: 'description', tag_list: ['docker', 'linux']) }
+      let(:runner) { create(:ci_runner, description: 'description', tag_list: %w(docker linux)) }
 
       before do
         build.update(runner: runner)
diff --git a/spec/models/ci/pipeline_spec.rb b/spec/models/ci/pipeline_spec.rb
index 714a3123efd379c43c32413737ce2f7d97991b77..9eff58880e3ac3c470885d27f55940c541f0b062 100644
--- a/spec/models/ci/pipeline_spec.rb
+++ b/spec/models/ci/pipeline_spec.rb
@@ -168,9 +168,9 @@ describe Ci::Pipeline, models: true do
         end
 
         it 'returns list of stages with correct statuses' do
-          expect(statuses).to eq([['build', 'failed'],
-                                  ['test', 'success'],
-                                  ['deploy', 'running']])
+          expect(statuses).to eq([%w(build failed),
+                                  %w(test success),
+                                  %w(deploy running)])
         end
 
         context 'when commit status  is retried' do
@@ -183,9 +183,9 @@ describe Ci::Pipeline, models: true do
           end
 
           it 'ignores the previous state' do
-            expect(statuses).to eq([['build', 'success'],
-                                    ['test', 'success'],
-                                    ['deploy', 'running']])
+            expect(statuses).to eq([%w(build success),
+                                    %w(test success),
+                                    %w(deploy running)])
           end
         end
       end
@@ -199,7 +199,7 @@ describe Ci::Pipeline, models: true do
 
     describe '#stages_name' do
       it 'returns a valid names of stages' do
-        expect(pipeline.stages_name).to eq(['build', 'test', 'deploy'])
+        expect(pipeline.stages_name).to eq(%w(build test deploy))
       end
     end
   end
@@ -767,7 +767,7 @@ describe Ci::Pipeline, models: true do
       end
 
       it 'cancels created builds' do
-        expect(latest_status).to eq ['canceled', 'canceled']
+        expect(latest_status).to eq %w(canceled canceled)
       end
     end
   end
diff --git a/spec/models/ci/runner_spec.rb b/spec/models/ci/runner_spec.rb
index f8513ac8b1c1ba6d134a670ba40313c4ee95b7aa..76ce558eea0a39e2e8d30ba579ee2a40880796ee 100644
--- a/spec/models/ci/runner_spec.rb
+++ b/spec/models/ci/runner_spec.rb
@@ -113,7 +113,7 @@ describe Ci::Runner, models: true do
 
     context 'when runner has tags' do
       before do
-        runner.tag_list = ['bb', 'cc']
+        runner.tag_list = %w(bb cc)
       end
 
       shared_examples 'tagged build picker' do
@@ -169,7 +169,7 @@ describe Ci::Runner, models: true do
 
         context 'when having runner tags' do
           before do
-            runner.tag_list = ['bb', 'cc']
+            runner.tag_list = %w(bb cc)
           end
 
           it 'cannot handle it for builds without matching tags' do
@@ -189,7 +189,7 @@ describe Ci::Runner, models: true do
 
         context 'when having runner tags' do
           before do
-            runner.tag_list = ['bb', 'cc']
+            runner.tag_list = %w(bb cc)
             build.tag_list = ['bb']
           end
 
@@ -212,7 +212,7 @@ describe Ci::Runner, models: true do
 
         context 'when having runner tags' do
           before do
-            runner.tag_list = ['bb', 'cc']
+            runner.tag_list = %w(bb cc)
             build.tag_list = ['bb']
           end
 
diff --git a/spec/models/merge_request_diff_spec.rb b/spec/models/merge_request_diff_spec.rb
index 6d599e148a258eb8dd415bb58ae18fa75474cb8f..0a10ee015062f638fc9021026fbd22fea8405515 100644
--- a/spec/models/merge_request_diff_spec.rb
+++ b/spec/models/merge_request_diff_spec.rb
@@ -109,7 +109,7 @@ describe MergeRequestDiff, models: true do
         { id: 'sha2' }
       ]
 
-      expect(subject.commits_sha).to eq(['sha1', 'sha2'])
+      expect(subject.commits_sha).to eq(%w(sha1 sha2))
     end
   end
 
diff --git a/spec/models/project_services/irker_service_spec.rb b/spec/models/project_services/irker_service_spec.rb
index dd5400f937b5a32923b1026d923e73ef07d18555..d5a16226d9d1de7becd2cae0a9f1baf84beddc12 100644
--- a/spec/models/project_services/irker_service_spec.rb
+++ b/spec/models/project_services/irker_service_spec.rb
@@ -60,7 +60,7 @@ describe IrkerService, models: true do
       conn = @irker_server.accept
       conn.readlines.each do |line|
         msg = JSON.parse(line.chomp("\n"))
-        expect(msg.keys).to match_array(['to', 'privmsg'])
+        expect(msg.keys).to match_array(%w(to privmsg))
         expect(msg['to']).to match_array(["irc://chat.freenode.net/#commits",
                                           "irc://test.net/#test"])
       end
diff --git a/spec/requests/api/issues_spec.rb b/spec/requests/api/issues_spec.rb
index 56ca4c04e7d943cf3ca21824fadf2218dd4f312b..7cb7531020456891262ca7b45af740dd351294d5 100644
--- a/spec/requests/api/issues_spec.rb
+++ b/spec/requests/api/issues_spec.rb
@@ -775,7 +775,7 @@ describe API::Issues, api: true  do
       expect(response).to have_http_status(201)
       expect(json_response['title']).to eq('new issue')
       expect(json_response['description']).to be_nil
-      expect(json_response['labels']).to eq(['label', 'label2'])
+      expect(json_response['labels']).to eq(%w(label label2))
       expect(json_response['confidential']).to be_falsy
     end
 
diff --git a/spec/requests/api/labels_spec.rb b/spec/requests/api/labels_spec.rb
index 566d11bba57caadc22562823a7bff819405ab2c5..eb3553d3b719c5120e72a3e3fad835ece63f4cb7 100644
--- a/spec/requests/api/labels_spec.rb
+++ b/spec/requests/api/labels_spec.rb
@@ -21,11 +21,10 @@ describe API::Labels, api: true  do
       create(:labeled_issue, project: project, labels: [label1], author: user, state: :closed)
       create(:labeled_merge_request, labels: [priority_label], author: user, source_project: project )
 
-      expected_keys = [
-        'id', 'name', 'color', 'description',
-        'open_issues_count', 'closed_issues_count', 'open_merge_requests_count',
-        'subscribed', 'priority'
-      ]
+      expected_keys = %w(
+id name color description 
+open_issues_count closed_issues_count open_merge_requests_count 
+subscribed priority)
 
       get api("/projects/#{project.id}/labels", user)
 
diff --git a/spec/requests/api/merge_requests_spec.rb b/spec/requests/api/merge_requests_spec.rb
index 61b3906d134dcf780cbb2eb7003765a4ad2f1105..9f26560be787a78ade7b6aab1b1a4e1d22e57814 100644
--- a/spec/requests/api/merge_requests_spec.rb
+++ b/spec/requests/api/merge_requests_spec.rb
@@ -250,7 +250,7 @@ describe API::MergeRequests, api: true  do
 
         expect(response).to have_http_status(201)
         expect(json_response['title']).to eq('Test merge_request')
-        expect(json_response['labels']).to eq(['label', 'label2'])
+        expect(json_response['labels']).to eq(%w(label label2))
         expect(json_response['milestone']['id']).to eq(milestone.id)
         expect(json_response['force_remove_source_branch']).to be_truthy
       end
diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb
index e78bc896ce88590fb790f356c05aa546c751c783..30247b3bcc80b27d7adbd95cd83d5d4cf53c7100 100644
--- a/spec/requests/api/projects_spec.rb
+++ b/spec/requests/api/projects_spec.rb
@@ -121,7 +121,7 @@ describe API::Projects, api: true  do
 
       context 'and with simple=true' do
         it 'returns a simplified version of all the projects' do
-          expected_keys = ["id", "http_url_to_repo", "web_url", "name", "name_with_namespace", "path", "path_with_namespace"]
+          expected_keys = %w(id http_url_to_repo web_url name name_with_namespace path path_with_namespace)
 
           get api('/projects?simple=true', user)
 
diff --git a/spec/requests/api/v3/issues_spec.rb b/spec/requests/api/v3/issues_spec.rb
index 8e6732fe23e2d2a955466bebe285ffa91ce72d1c..803acd554706381a9a1dd5fb973e3a2842a99725 100644
--- a/spec/requests/api/v3/issues_spec.rb
+++ b/spec/requests/api/v3/issues_spec.rb
@@ -722,7 +722,7 @@ describe API::V3::Issues, api: true  do
       expect(response).to have_http_status(201)
       expect(json_response['title']).to eq('new issue')
       expect(json_response['description']).to be_nil
-      expect(json_response['labels']).to eq(['label', 'label2'])
+      expect(json_response['labels']).to eq(%w(label label2))
       expect(json_response['confidential']).to be_falsy
     end
 
diff --git a/spec/requests/api/v3/labels_spec.rb b/spec/requests/api/v3/labels_spec.rb
index bcb0c6b94492c8ba52206a7f8f42f699b2b23a79..a0fc9215c6e43d9381c1dc453531b8adae1b8cb7 100644
--- a/spec/requests/api/v3/labels_spec.rb
+++ b/spec/requests/api/v3/labels_spec.rb
@@ -21,11 +21,10 @@ describe API::V3::Labels, api: true  do
       create(:labeled_issue, project: project, labels: [label1], author: user, state: :closed)
       create(:labeled_merge_request, labels: [priority_label], author: user, source_project: project )
 
-      expected_keys = [
-        'id', 'name', 'color', 'description',
-        'open_issues_count', 'closed_issues_count', 'open_merge_requests_count',
-        'subscribed', 'priority'
-      ]
+      expected_keys = %w(
+id name color description 
+open_issues_count closed_issues_count open_merge_requests_count 
+subscribed priority)
 
       get v3_api("/projects/#{project.id}/labels", user)
 
diff --git a/spec/requests/api/v3/merge_requests_spec.rb b/spec/requests/api/v3/merge_requests_spec.rb
index ce96ad0684fa2f35cc876fa6417e464019a53a47..cb370418e9c99affff78ae80f986941ce894e2ae 100644
--- a/spec/requests/api/v3/merge_requests_spec.rb
+++ b/spec/requests/api/v3/merge_requests_spec.rb
@@ -237,7 +237,7 @@ describe API::MergeRequests, api: true  do
 
         expect(response).to have_http_status(201)
         expect(json_response['title']).to eq('Test merge_request')
-        expect(json_response['labels']).to eq(['label', 'label2'])
+        expect(json_response['labels']).to eq(%w(label label2))
         expect(json_response['milestone']['id']).to eq(milestone.id)
         expect(json_response['force_remove_source_branch']).to be_truthy
       end
diff --git a/spec/requests/api/v3/projects_spec.rb b/spec/requests/api/v3/projects_spec.rb
index fc7da939b349ee73f537656d0d99a30c789fafb8..273a4a58224de3990f6a1c787670cf02aeaa7746 100644
--- a/spec/requests/api/v3/projects_spec.rb
+++ b/spec/requests/api/v3/projects_spec.rb
@@ -84,7 +84,7 @@ describe API::V3::Projects, api: true do
 
       context 'GET /projects?simple=true' do
         it 'returns a simplified version of all the projects' do
-          expected_keys = ["id", "http_url_to_repo", "web_url", "name", "name_with_namespace", "path", "path_with_namespace"]
+          expected_keys = %w(id http_url_to_repo web_url name name_with_namespace path path_with_namespace)
 
           get v3_api('/projects?simple=true', user)
 
diff --git a/spec/requests/ci/api/builds_spec.rb b/spec/requests/ci/api/builds_spec.rb
index ecdcdb677f43fd290d4cc6e6b52ca2c50bba69db..5ba1209af5d512a3751fc2d8b7a5fe5c2e4593a3 100644
--- a/spec/requests/ci/api/builds_spec.rb
+++ b/spec/requests/ci/api/builds_spec.rb
@@ -3,7 +3,7 @@ require 'spec_helper'
 describe Ci::API::Builds do
   include ApiHelpers
 
-  let(:runner) { FactoryGirl.create(:ci_runner, tag_list: ["mysql", "ruby"]) }
+  let(:runner) { FactoryGirl.create(:ci_runner, tag_list: %w(mysql ruby)) }
   let(:project) { FactoryGirl.create(:empty_project, shared_runners_enabled: false) }
   let(:last_update) { nil }
 
diff --git a/spec/requests/ci/api/runners_spec.rb b/spec/requests/ci/api/runners_spec.rb
index bd55934d0c8f9563559b294c1ce51018871c989a..8719313783e8567b2e7dbb4255093e9ca9c54d00 100644
--- a/spec/requests/ci/api/runners_spec.rb
+++ b/spec/requests/ci/api/runners_spec.rb
@@ -41,7 +41,7 @@ describe Ci::API::Runners do
 
       it 'creates runner' do
         expect(response).to have_http_status 201
-        expect(Ci::Runner.first.tag_list.sort).to eq(["tag1", "tag2"])
+        expect(Ci::Runner.first.tag_list.sort).to eq(%w(tag1 tag2))
       end
     end
 
diff --git a/spec/services/auth/container_registry_authentication_service_spec.rb b/spec/services/auth/container_registry_authentication_service_spec.rb
index bb26513103d08b0efeddeeec95fdd804cc6788a0..b91234ddb1e71dd303a89657e8b7b200567e1f95 100644
--- a/spec/services/auth/container_registry_authentication_service_spec.rb
+++ b/spec/services/auth/container_registry_authentication_service_spec.rb
@@ -72,7 +72,7 @@ describe Auth::ContainerRegistryAuthenticationService, services: true do
 
   shared_examples 'a pullable and pushable' do
     it_behaves_like 'a accessible' do
-      let(:actions) { ['pull', 'push'] }
+      let(:actions) { %w(pull push) }
     end
   end
 
diff --git a/spec/services/merge_requests/resolve_service_spec.rb b/spec/services/merge_requests/resolve_service_spec.rb
index 71e46969265e689a3c3e92c3d71c7e5c5c0839a9..26cf0bbffdf1fd2ef161e695ae92eeee893ba29f 100644
--- a/spec/services/merge_requests/resolve_service_spec.rb
+++ b/spec/services/merge_requests/resolve_service_spec.rb
@@ -59,8 +59,8 @@ describe MergeRequests::ResolveService do
 
         it 'creates a commit with the correct parents' do
           expect(merge_request.source_branch_head.parents.map(&:id))
-            .to eq(['1450cd639e0bc6721eb02800169e464f212cde06',
-                   '824be604a34828eb682305f0d963056cfac87b2d'])
+            .to eq(%w(1450cd639e0bc6721eb02800169e464f212cde06 
+824be604a34828eb682305f0d963056cfac87b2d))
         end
       end
 
@@ -125,8 +125,8 @@ describe MergeRequests::ResolveService do
 
       it 'creates a commit with the correct parents' do
         expect(merge_request.source_branch_head.parents.map(&:id))
-          .to eq(['1450cd639e0bc6721eb02800169e464f212cde06',
-                 '824be604a34828eb682305f0d963056cfac87b2d'])
+          .to eq(%w(1450cd639e0bc6721eb02800169e464f212cde06 
+824be604a34828eb682305f0d963056cfac87b2d))
       end
 
       it 'sets the content to the content given' do
diff --git a/spec/services/system_note_service_spec.rb b/spec/services/system_note_service_spec.rb
index d771280412565d18cdcf4e4a7572a953ebdb5a68..dfa5175b7d8b5ace0b5445b966796068b1098f17 100644
--- a/spec/services/system_note_service_spec.rb
+++ b/spec/services/system_note_service_spec.rb
@@ -631,7 +631,7 @@ describe SystemNoteService, services: true do
       jira_service_settings
     end
 
-    noteable_types = ["merge_requests", "commit"]
+    noteable_types = %w(merge_requests commit)
 
     noteable_types.each do |type|
       context "when noteable is a #{type}" do
diff --git a/spec/support/repo_helpers.rb b/spec/support/repo_helpers.rb
index 73f375c481bf9ed5b7af6745f90828d9afbdb4bb..aab5d32ff36af250b4b1db1c98283b8120733fef 100644
--- a/spec/support/repo_helpers.rb
+++ b/spec/support/repo_helpers.rb
@@ -100,13 +100,12 @@ eos
       }
     ]
 
-    commits = [
-      '5937ac0a7beb003549fc5fd26fc247adbce4a52e',
-      '570e7b2abdd848b95f2f578043fc23bd6f6fd24d',
-      '6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9',
-      'd14d6c0abdd253381df51a723d58691b2ee1ab08',
-      'c1acaa58bbcbc3eafe538cb8274ba387047b69f8',
-    ].reverse # last commit is recent one
+    commits = %w(
+5937ac0a7beb003549fc5fd26fc247adbce4a52e 
+570e7b2abdd848b95f2f578043fc23bd6f6fd24d 
+6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9 
+d14d6c0abdd253381df51a723d58691b2ee1ab08 
+c1acaa58bbcbc3eafe538cb8274ba387047b69f8).reverse # last commit is recent one
 
     OpenStruct.new(
       source_branch: 'master',