From 33c9f05c6bb90a995ddc685b4a22479f17c575e5 Mon Sep 17 00:00:00 2001
From: Ciro Santilli <ciro.santilli@gmail.com>
Date: Thu, 9 Oct 2014 09:47:47 +0200
Subject: [PATCH] Append in place for strings and arrays

---
 app/controllers/projects/refs_controller.rb |  6 ++---
 app/helpers/commits_helper.rb               |  2 +-
 app/helpers/graph_helper.rb                 |  4 ++--
 app/helpers/projects_helper.rb              |  2 +-
 app/helpers/tags_helper.rb                  |  2 +-
 app/helpers/tree_helper.rb                  |  9 ++++---
 app/models/ability.rb                       | 26 ++++++++++-----------
 app/models/concerns/mentionable.rb          |  2 +-
 app/models/merge_request.rb                 |  3 ++-
 app/models/network/graph.rb                 |  2 +-
 app/models/project.rb                       |  2 +-
 app/models/project_team.rb                  |  2 +-
 app/models/user.rb                          |  4 ++--
 config/application.rb                       | 12 +++++-----
 14 files changed, 41 insertions(+), 37 deletions(-)

diff --git a/app/controllers/projects/refs_controller.rb b/app/controllers/projects/refs_controller.rb
index 5d9336bdc49..67665f5f601 100644
--- a/app/controllers/projects/refs_controller.rb
+++ b/app/controllers/projects/refs_controller.rb
@@ -41,9 +41,9 @@ class Projects::RefsController < Projects::ApplicationController
     @path = params[:path]
 
     contents = []
-    contents += tree.trees
-    contents += tree.blobs
-    contents += tree.submodules
+    contents.push(*tree.trees)
+    contents.push(*tree.blobs)
+    contents.push(*tree.submodules)
 
     @logs = contents[@offset, @limit].to_a.map do |content|
       file = @path ? File.join(@path, content.name) : content.name
diff --git a/app/helpers/commits_helper.rb b/app/helpers/commits_helper.rb
index 36adeadd8a5..cf279823986 100644
--- a/app/helpers/commits_helper.rb
+++ b/app/helpers/commits_helper.rb
@@ -44,7 +44,7 @@ module CommitsHelper
       parts = @path.split('/')
 
       parts.each_with_index do |part, i|
-        crumbs += content_tag(:li) do
+        crumbs << content_tag(:li) do
           # The text is just the individual part, but the link needs all the parts before it
           link_to part, project_commits_path(@project, tree_join(@ref, parts[0..i].join('/')))
         end
diff --git a/app/helpers/graph_helper.rb b/app/helpers/graph_helper.rb
index 7cb1b6f8d1a..e1dda20de85 100644
--- a/app/helpers/graph_helper.rb
+++ b/app/helpers/graph_helper.rb
@@ -1,10 +1,10 @@
 module GraphHelper
   def get_refs(repo, commit)
     refs = ""
-    refs += commit.ref_names(repo).join(" ")
+    refs << commit.ref_names(repo).join(' ')
 
     # append note count
-    refs += "[#{@graph.notes[commit.id]}]" if @graph.notes[commit.id] > 0
+    refs << "[#{@graph.notes[commit.id]}]" if @graph.notes[commit.id] > 0
 
     refs
   end
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index e489d431e84..f7e01f90717 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -86,7 +86,7 @@ module ProjectsHelper
 
   def link_to_toggle_star(title, starred, signed_in)
     cls = 'star-btn'
-    cls += ' disabled' unless signed_in
+    cls << ' disabled' unless signed_in
 
     toggle_html = content_tag('span', class: 'toggle') do
       toggle_text = if starred
diff --git a/app/helpers/tags_helper.rb b/app/helpers/tags_helper.rb
index ef89bb32c6d..fb85544df2d 100644
--- a/app/helpers/tags_helper.rb
+++ b/app/helpers/tags_helper.rb
@@ -6,7 +6,7 @@ module TagsHelper
   def tag_list(project)
     html = ''
     project.tag_list.each do |tag|
-      html += link_to tag, tag_path(tag)
+      html << link_to(tag, tag_path(tag))
     end
 
     html.html_safe
diff --git a/app/helpers/tree_helper.rb b/app/helpers/tree_helper.rb
index e32aeba5f8f..8693acad994 100644
--- a/app/helpers/tree_helper.rb
+++ b/app/helpers/tree_helper.rb
@@ -10,13 +10,16 @@ module TreeHelper
     tree = ""
 
     # Render folders if we have any
-    tree += render partial: 'projects/tree/tree_item', collection: folders, locals: {type: 'folder'} if folders.present?
+    tree << render(partial: 'projects/tree/tree_item', collection: folders,
+                   locals: { type: 'folder' }) if folders.present?
 
     # Render files if we have any
-    tree += render partial: 'projects/tree/blob_item', collection: files, locals: {type: 'file'} if files.present?
+    tree << render(partial: 'projects/tree/blob_item', collection: files,
+                   locals: { type: 'file' }) if files.present?
 
     # Render submodules if we have any
-    tree += render partial: 'projects/tree/submodule_item', collection: submodules if submodules.present?
+    tree << render(partial: 'projects/tree/submodule_item',
+                   collection: submodules) if submodules.present?
 
     tree.html_safe
   end
diff --git a/app/models/ability.rb b/app/models/ability.rb
index 97a72bf3635..890417e780d 100644
--- a/app/models/ability.rb
+++ b/app/models/ability.rb
@@ -73,28 +73,28 @@ class Ability
 
         # Rules based on role in project
         if team.master?(user)
-          rules += project_master_rules
+          rules.push(*project_master_rules)
 
         elsif team.developer?(user)
-          rules += project_dev_rules
+          rules.push(*project_dev_rules)
 
         elsif team.reporter?(user)
-          rules += project_report_rules
+          rules.push(*project_report_rules)
 
         elsif team.guest?(user)
-          rules += project_guest_rules
+          rules.push(*project_guest_rules)
         end
 
         if project.public? || project.internal?
-          rules += public_project_rules
+          rules.push(*public_project_rules)
         end
 
         if project.owner == user || user.admin?
-          rules += project_admin_rules
+          rules.push(*project_admin_rules)
         end
 
         if project.group && project.group.has_owner?(user)
-          rules += project_admin_rules
+          rules.push(*project_admin_rules)
         end
 
         if project.archived?
@@ -193,17 +193,17 @@ class Ability
 
       # Only group masters and group owners can create new projects in group
       if group.has_master?(user) || group.has_owner?(user) || user.admin?
-        rules += [
+        rules.push(*[
           :create_projects,
-        ]
+        ])
       end
 
       # Only group owner and administrators can manage group
       if group.has_owner?(user) || user.admin?
-        rules += [
+        rules.push(*[
           :manage_group,
           :manage_namespace
-        ]
+        ])
       end
 
       rules.flatten
@@ -214,10 +214,10 @@ class Ability
 
       # Only namespace owner and administrators can manage it
       if namespace.owner == user || user.admin?
-        rules += [
+        rules.push(*[
           :create_projects,
           :manage_namespace
-        ]
+        ])
       end
 
       rules.flatten
diff --git a/app/models/concerns/mentionable.rb b/app/models/concerns/mentionable.rb
index 6c1aa99668a..66f83b932d4 100644
--- a/app/models/concerns/mentionable.rb
+++ b/app/models/concerns/mentionable.rb
@@ -50,7 +50,7 @@ module Mentionable
     matches.each do |match|
       identifier = match.delete "@"
       if identifier == "all"
-        users += project.team.members.flatten
+        users.push(*project.team.members.flatten)
       else
         id = User.find_by(username: identifier).try(:id)
         users << User.find(id) unless id.blank?
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 2cc427d35c2..5dc3c403b3b 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -248,7 +248,8 @@ class MergeRequest < ActiveRecord::Base
   def closes_issues
     if target_branch == project.default_branch
       issues = commits.flat_map { |c| c.closes_issues(project) }
-      issues += Gitlab::ClosingIssueExtractor.closed_by_message_in_project(description, project)
+      issues.push(*Gitlab::ClosingIssueExtractor.
+                  closed_by_message_in_project(description, project))
       issues.uniq.sort_by(&:id)
     else
       []
diff --git a/app/models/network/graph.rb b/app/models/network/graph.rb
index 43979b5e807..f13a40cf4f6 100644
--- a/app/models/network/graph.rb
+++ b/app/models/network/graph.rb
@@ -226,7 +226,7 @@ module Network
 
       reserved = []
       for day in time_range
-        reserved += @reserved[day]
+        reserved.push(*@reserved[day])
       end
       reserved.uniq!
 
diff --git a/app/models/project.rb b/app/models/project.rb
index b0c379e6157..67898955d63 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -170,7 +170,7 @@ class Project < ActiveRecord::Base
 
     def publicish(user)
       visibility_levels = [Project::PUBLIC]
-      visibility_levels += [Project::INTERNAL] if user
+      visibility_levels << Project::INTERNAL if user
       where(visibility_level: visibility_levels)
     end
 
diff --git a/app/models/project_team.rb b/app/models/project_team.rb
index 657ee23ae23..bc9c3ce58f6 100644
--- a/app/models/project_team.rb
+++ b/app/models/project_team.rb
@@ -160,7 +160,7 @@ class ProjectTeam
     end
 
     user_ids = project_members.pluck(:user_id)
-    user_ids += group_members.pluck(:user_id) if group
+    user_ids.push(*group_members.pluck(:user_id)) if group
 
     User.where(id: user_ids)
   end
diff --git a/app/models/user.rb b/app/models/user.rb
index 7dae318e780..33a0d03370e 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -297,8 +297,8 @@ class User < ActiveRecord::Base
   def authorized_projects
     @authorized_projects ||= begin
                                project_ids = personal_projects.pluck(:id)
-                               project_ids += groups_projects.pluck(:id)
-                               project_ids += projects.pluck(:id).uniq
+                               project_ids.push(*groups_projects.pluck(:id))
+                               project_ids.push(*projects.pluck(:id).uniq)
                                Project.where(id: project_ids).joins(:namespace).order('namespaces.name ASC')
                              end
   end
diff --git a/config/application.rb b/config/application.rb
index 8a280de6fac..a7d371c78ea 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -12,11 +12,11 @@ module Gitlab
     # -- all .rb files in that directory are automatically loaded.
 
     # Custom directories with classes and modules you want to be autoloadable.
-    config.autoload_paths += %W(#{config.root}/lib
-                                #{config.root}/app/models/hooks
-                                #{config.root}/app/models/concerns
-                                #{config.root}/app/models/project_services
-                                #{config.root}/app/models/members)
+    config.autoload_paths.push(*%W(#{config.root}/lib
+                                   #{config.root}/app/models/hooks
+                                   #{config.root}/app/models/concerns
+                                   #{config.root}/app/models/project_services
+                                   #{config.root}/app/models/members))
 
     # Only load the plugins named here, in the order given (default is alphabetical).
     # :all can be used as a placeholder for all plugins not explicitly named.
@@ -31,7 +31,7 @@ module Gitlab
     config.encoding = "utf-8"
 
     # Configure sensitive parameters which will be filtered from the log file.
-    config.filter_parameters += [:password]
+    config.filter_parameters.push(*[:password])
 
     # Enable escaping HTML in JSON.
     config.active_support.escape_html_entities_in_json = true
-- 
GitLab