diff --git a/CHANGELOG b/CHANGELOG
index 06a10e379f78ed42c3148f0919dd8f57b196472f..dd9b13ceac254c29b19a5b354f353deeedc4bf8d 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -34,7 +34,7 @@ v 7.8.0
   - 
   - 
   - 
-  - 
+  - Add Project Avatars (Steven Thonus and Hannes Rosenögger)
   - 
   - 
   - Password reset token validity increased from 2 hours to 2 days since it is also send on account creation.
diff --git a/app/assets/javascripts/dispatcher.js.coffee b/app/assets/javascripts/dispatcher.js.coffee
index ef86c2781c9f37e9872092c7b76636705a4cd755..1643ca941ff5e4e91e99a16398745bb103d9e716 100644
--- a/app/assets/javascripts/dispatcher.js.coffee
+++ b/app/assets/javascripts/dispatcher.js.coffee
@@ -96,6 +96,7 @@ class Dispatcher
         new Profile()
       when 'projects'
         new Project()
+        new ProjectAvatar()
         switch path[1]
           when 'edit'
             shortcut_handler = new ShortcutsNavigation()
diff --git a/app/assets/javascripts/project.js.coffee b/app/assets/javascripts/project.js.coffee
index 8588a9d27cd6e62f477af3aed3350eafb4e00263..5a9cc66c8f0042e7eb3a90df9d7b1ea1e71e0708 100644
--- a/app/assets/javascripts/project.js.coffee
+++ b/app/assets/javascripts/project.js.coffee
@@ -18,13 +18,3 @@ class @Project
       $.cookie('hide_no_ssh_message', 'false', { path: path })
       $(@).parents('.no-ssh-key-message').hide()
       e.preventDefault()
-
-  # avatar
-  $('.js-choose-project-avatar-button').bind "click", ->
-    form = $(this).closest("form")
-    form.find(".js-project-avatar-input").click()
-
-  $('.js-project-avatar-input').bind "change", ->
-    form = $(this).closest("form")
-    filename = $(this).val().replace(/^.*[\\\/]/, '')
-    form.find(".js-avatar-filename").text(filename)
diff --git a/app/assets/javascripts/project_avatar.js.coffee b/app/assets/javascripts/project_avatar.js.coffee
new file mode 100644
index 0000000000000000000000000000000000000000..8bec6e2ccca0046469046bd4b3f338cfec827a74
--- /dev/null
+++ b/app/assets/javascripts/project_avatar.js.coffee
@@ -0,0 +1,9 @@
+class @ProjectAvatar
+  constructor: ->
+    $('.js-choose-project-avatar-button').bind 'click', ->
+      form = $(this).closest('form')
+      form.find('.js-project-avatar-input').click()
+    $('.js-project-avatar-input').bind 'change', ->
+      form = $(this).closest('form')
+      filename = $(this).val().replace(/^.*[\\\/]/, '')
+      form.find('.js-avatar-filename').text(filename)
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 89296b9aa4a5c2f871059cee8b993ebc0de69fef..ebe48265c63bdecf0ed6d4ec5d4e0ba295efbeeb 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -14,7 +14,7 @@ class ProjectsController < ApplicationController
   end
 
   def edit
-    render 'edit', layout: "project_settings"
+    render 'edit', layout: 'project_settings'
   end
 
   def create
@@ -36,7 +36,7 @@ class ProjectsController < ApplicationController
         format.html { redirect_to edit_project_path(@project), notice: 'Project was successfully updated.' }
         format.js
       else
-        format.html { render "edit", layout: "project_settings" }
+        format.html { render 'edit', layout: 'project_settings' }
         format.js
       end
     end
@@ -66,17 +66,17 @@ class ProjectsController < ApplicationController
       format.html do
         if @project.repository_exists?
           if @project.empty_repo?
-            render "projects/empty", layout: user_layout
+            render 'projects/empty', layout: user_layout
           else
             @last_push = current_user.recent_push(@project.id) if current_user
             render :show, layout: user_layout
           end
         else
-          render "projects/no_repo", layout: user_layout
+          render 'projects/no_repo', layout: user_layout
         end
       end
 
-      format.json { pager_json("events/_events", @events.count) }
+      format.json { pager_json('events/_events', @events.count) }
     end
   end
 
@@ -87,9 +87,9 @@ class ProjectsController < ApplicationController
 
     respond_to do |format|
       format.html do
-        flash[:alert] = "Project deleted."
+        flash[:alert] = 'Project deleted.'
 
-        if request.referer.include?("/admin")
+        if request.referer.include?('/admin')
           redirect_to admin_projects_path
         else
           redirect_to projects_dashboard_path
@@ -141,7 +141,7 @@ class ProjectsController < ApplicationController
       if link_to_image
         format.json { render json: { link: link_to_image } }
       else
-        format.json { render json: "Invalid file.", status: :unprocessable_entity }
+        format.json { render json: 'Invalid file.', status: :unprocessable_entity }
       end
     end
   end
@@ -172,14 +172,14 @@ class ProjectsController < ApplicationController
   end
 
   def user_layout
-    current_user ? "projects" : "public_projects"
+    current_user ? 'projects' : 'public_projects'
   end
 
   def project_params
     params.require(:project).permit(
       :name, :path, :description, :issues_tracker, :tag_list,
       :issues_enabled, :merge_requests_enabled, :snippets_enabled, :issues_tracker_id, :default_branch,
-      :wiki_enabled, :visibility_level, :import_url, :last_activity_at, :namespace_id
+      :wiki_enabled, :visibility_level, :import_url, :last_activity_at, :namespace_id, :avatar
     )
   end
 
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 772400d55ec0a624a33a3030b9199eaa1d1612e1..32fd0ed7bcc936dd9d85bf4b5ff2ace80b470baf 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -54,10 +54,10 @@ module ApplicationHelper
     project = Project.find_with_namespace(project_id)
     if project.avatar.present?
       image_tag project.avatar.url, options
-    elsif options[:only_uploaded]
-      image_tag '/assets/no_project_icon.png', options
     elsif project.avatar_in_git
       image_tag project_avatar_path(project), options
+    elsif options[:only_uploaded]
+      image_tag '/assets/no_project_icon.png', options
     else # generated icon
       project_identicon(project, options)
     end
@@ -107,24 +107,24 @@ module ApplicationHelper
     if project.repo_exists?
       time_ago_with_tooltip(project.repository.commit.committed_date)
     else
-      "Never"
+      'Never'
     end
   rescue
-    "Never"
+    'Never'
   end
 
   def grouped_options_refs
     repository = @project.repository
 
     options = [
-      ["Branches", repository.branch_names],
-      ["Tags", VersionSorter.rsort(repository.tag_names)]
+      ['Branches', repository.branch_names],
+      ['Tags', VersionSorter.rsort(repository.tag_names)]
     ]
 
     # If reference is commit id - we should add it to branch/tag selectbox
     if(@ref && !options.flatten.include?(@ref) &&
        @ref =~ /^[0-9a-zA-Z]{6,52}$/)
-      options << ["Commit", [@ref]]
+      options << ['Commit', [@ref]]
     end
 
     grouped_options_for_select(options, @ref || @project.default_branch)
@@ -186,7 +186,7 @@ module ApplicationHelper
     path = controller.controller_path.split('/')
     namespace = path.first if path.second
 
-    [namespace, controller.controller_name, controller.action_name].compact.join(":")
+    [namespace, controller.controller_name, controller.action_name].compact.join(':')
   end
 
   # shortcut for gitlab config
@@ -201,13 +201,13 @@ module ApplicationHelper
 
   def search_placeholder
     if @project && @project.persisted?
-      "Search in this project"
+      'Search in this project'
     elsif @snippet || @snippets || @show_snippets
       'Search snippets'
     elsif @group && @group.persisted?
-      "Search in this group"
+      'Search in this group'
     else
-      "Search"
+      'Search'
     end
   end
 
@@ -218,7 +218,7 @@ module ApplicationHelper
   def time_ago_with_tooltip(date, placement = 'top', html_class = 'time_ago')
     capture_haml do
       haml_tag :time, date.to_s,
-        class: html_class, datetime: date.getutc.iso8601, title: date.stamp("Aug 21, 2011 9:23pm"),
+        class: html_class, datetime: date.getutc.iso8601, title: date.stamp('Aug 21, 2011 9:23pm'),
         data: { toggle: 'tooltip', placement: placement }
 
       haml_tag :script, "$('." + html_class + "').timeago().tooltip()"
@@ -241,8 +241,8 @@ module ApplicationHelper
   end
 
   def spinner(text = nil, visible = false)
-    css_class = "loading"
-    css_class << " hide" unless visible
+    css_class = 'loading'
+    css_class << ' hide' unless visible
 
     content_tag :div, class: css_class do
       content_tag(:i, nil, class: 'fa fa-spinner fa-spin') + text
@@ -259,17 +259,17 @@ module ApplicationHelper
       absolute_uri = nil
     end
 
-    # Add "nofollow" only to external links
+    # Add 'nofollow' only to external links
     if host && host != Gitlab.config.gitlab.host && absolute_uri
       if html_options
         if html_options[:rel]
-          html_options[:rel] << " nofollow"
+          html_options[:rel] << ' nofollow'
         else
-          html_options.merge!(rel: "nofollow")
+          html_options.merge!(rel: 'nofollow')
         end
       else
         html_options = Hash.new
-        html_options[:rel] = "nofollow"
+        html_options[:rel] = 'nofollow'
       end
     end
 
diff --git a/app/models/project.rb b/app/models/project.rb
index 7160e704aa1e4cdb20c6a83db7c81bda88fd9c62..97f23227484585b474333347aeaa641285aa6400 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -14,7 +14,7 @@
 #  merge_requests_enabled :boolean          default(TRUE), not null
 #  wiki_enabled           :boolean          default(TRUE), not null
 #  namespace_id           :integer
-#  issues_tracker         :string(255)      default("gitlab"), not null
+#  issues_tracker         :string(255)      default('gitlab'), not null
 #  issues_tracker_id      :string(255)
 #  snippets_enabled       :boolean          default(TRUE), not null
 #  last_activity_at       :datetime
@@ -29,6 +29,9 @@
 #  avatar                 :string(255)
 #
 
+require 'carrierwave/orm/activerecord'
+require 'file_size_validator'
+
 class Project < ActiveRecord::Base
   include Gitlab::ShellAdapter
   include Gitlab::VisibilityLevel
@@ -50,8 +53,8 @@ class Project < ActiveRecord::Base
   attr_accessor :new_default_branch
 
   # Relations
-  belongs_to :creator,      foreign_key: "creator_id", class_name: "User"
-  belongs_to :group, -> { where(type: Group) }, foreign_key: "namespace_id"
+  belongs_to :creator,      foreign_key: 'creator_id', class_name: 'User'
+  belongs_to :group, -> { where(type: Group) }, foreign_key: 'namespace_id'
   belongs_to :namespace
 
   has_one :last_event, -> {order 'events.created_at DESC'}, class_name: 'Event', foreign_key: 'project_id'
@@ -71,20 +74,20 @@ class Project < ActiveRecord::Base
   has_one :bamboo_service, dependent: :destroy
   has_one :teamcity_service, dependent: :destroy
   has_one :pushover_service, dependent: :destroy
-  has_one :forked_project_link, dependent: :destroy, foreign_key: "forked_to_project_id"
+  has_one :forked_project_link, dependent: :destroy, foreign_key: 'forked_to_project_id'
   has_one :forked_from_project, through: :forked_project_link
   # Merge Requests for target project should be removed with it
-  has_many :merge_requests,     dependent: :destroy, foreign_key: "target_project_id"
+  has_many :merge_requests,     dependent: :destroy, foreign_key: 'target_project_id'
   # Merge requests from source project should be kept when source project was removed
-  has_many :fork_merge_requests, foreign_key: "source_project_id", class_name: MergeRequest
+  has_many :fork_merge_requests, foreign_key: 'source_project_id', class_name: MergeRequest
   has_many :issues, -> { order 'issues.state DESC, issues.created_at DESC' }, dependent: :destroy
   has_many :labels,             dependent: :destroy
   has_many :services,           dependent: :destroy
   has_many :events,             dependent: :destroy
   has_many :milestones,         dependent: :destroy
   has_many :notes,              dependent: :destroy
-  has_many :snippets,           dependent: :destroy, class_name: "ProjectSnippet"
-  has_many :hooks,              dependent: :destroy, class_name: "ProjectHook"
+  has_many :snippets,           dependent: :destroy, class_name: 'ProjectSnippet'
+  has_many :hooks,              dependent: :destroy, class_name: 'ProjectHook'
   has_many :protected_branches, dependent: :destroy
   has_many :project_members, dependent: :destroy, as: :source, class_name: 'ProjectMember'
   has_many :users, through: :project_members
@@ -116,27 +119,27 @@ class Project < ActiveRecord::Base
   validates_uniqueness_of :name, scope: :namespace_id
   validates_uniqueness_of :path, scope: :namespace_id
   validates :import_url,
-    format: { with: URI::regexp(%w(git http https)), message: "should be a valid url" },
+    format: { with: URI::regexp(%w(git http https)), message: 'should be a valid url' },
     if: :import?
   validates :star_count, numericality: { greater_than_or_equal_to: 0 }
   validate :check_limit, on: :create
   validate :avatar_type,
     if: ->(project) { project.avatar && project.avatar_changed? }
-  validates :avatar, file_size: { maximum: 100.kilobytes.to_i }
+  validates :avatar, file_size: { maximum: 200.kilobytes.to_i }
 
   mount_uploader :avatar, AttachmentUploader
 
   # Scopes
-  scope :without_user, ->(user)  { where("projects.id NOT IN (:ids)", ids: user.authorized_projects.map(&:id) ) }
-  scope :without_team, ->(team) { team.projects.present? ? where("projects.id NOT IN (:ids)", ids: team.projects.map(&:id)) : scoped  }
-  scope :not_in_group, ->(group) { where("projects.id NOT IN (:ids)", ids: group.project_ids ) }
-  scope :in_team, ->(team) { where("projects.id IN (:ids)", ids: team.projects.map(&:id)) }
+  scope :without_user, ->(user)  { where('projects.id NOT IN (:ids)', ids: user.authorized_projects.map(&:id) ) }
+  scope :without_team, ->(team) { team.projects.present? ? where('projects.id NOT IN (:ids)', ids: team.projects.map(&:id)) : scoped  }
+  scope :not_in_group, ->(group) { where('projects.id NOT IN (:ids)', ids: group.project_ids ) }
+  scope :in_team, ->(team) { where('projects.id IN (:ids)', ids: team.projects.map(&:id)) }
   scope :in_namespace, ->(namespace) { where(namespace_id: namespace.id) }
   scope :in_group_namespace, -> { joins(:group) }
-  scope :sorted_by_activity, -> { reorder("projects.last_activity_at DESC") }
-  scope :sorted_by_stars, -> { reorder("projects.star_count DESC") }
+  scope :sorted_by_activity, -> { reorder('projects.last_activity_at DESC') }
+  scope :sorted_by_stars, -> { reorder('projects.star_count DESC') }
   scope :personal, ->(user) { where(namespace_id: user.namespace_id) }
-  scope :joined, ->(user) { where("namespace_id != ?", user.namespace_id) }
+  scope :joined, ->(user) { where('namespace_id != ?', user.namespace_id) }
   scope :public_only, -> { where(visibility_level: Project::PUBLIC) }
   scope :public_and_internal_only, -> { where(visibility_level: Project.public_and_internal_levels) }
   scope :non_archived, -> { where(archived: false) }
@@ -187,26 +190,26 @@ class Project < ActiveRecord::Base
     end
 
     def active
-      joins(:issues, :notes, :merge_requests).order("issues.created_at, notes.created_at, merge_requests.created_at DESC")
+      joins(:issues, :notes, :merge_requests).order('issues.created_at, notes.created_at, merge_requests.created_at DESC')
     end
 
     def search(query)
-      joins(:namespace).where("projects.archived = ?", false).
-        where("LOWER(projects.name) LIKE :query OR
+      joins(:namespace).where('projects.archived = ?', false).
+        where('LOWER(projects.name) LIKE :query OR
               LOWER(projects.path) LIKE :query OR
               LOWER(namespaces.name) LIKE :query OR
-              LOWER(projects.description) LIKE :query",
+              LOWER(projects.description) LIKE :query',
               query: "%#{query.try(:downcase)}%")
     end
 
     def search_by_title(query)
-      where("projects.archived = ?", false).where("LOWER(projects.name) LIKE :query", query: "%#{query.downcase}%")
+      where('projects.archived = ?', false).where('LOWER(projects.name) LIKE :query', query: "%#{query.downcase}%")
     end
 
     def find_with_namespace(id)
-      return nil unless id.include?("/")
+      return nil unless id.include?('/')
 
-      id = id.split("/")
+      id = id.split('/')
       namespace = Namespace.find_by(path: id.first)
       return nil unless namespace
 
@@ -224,7 +227,7 @@ class Project < ActiveRecord::Base
       when 'recently_updated' then reorder('projects.updated_at DESC')
       when 'last_updated' then reorder('projects.updated_at ASC')
       when 'largest_repository' then reorder('projects.repository_size DESC')
-      else reorder("namespaces.path, projects.name ASC")
+      else reorder('namespaces.path, projects.name ASC')
       end
     end
   end
@@ -274,19 +277,19 @@ class Project < ActiveRecord::Base
   end
 
   def to_param
-    namespace.path + "/" + path
+    namespace.path + '/' + path
   end
 
   def web_url
-    [gitlab_config.url, path_with_namespace].join("/")
+    [gitlab_config.url, path_with_namespace].join('/')
   end
 
   def web_url_without_protocol
-    web_url.split("://")[1]
+    web_url.split('://')[1]
   end
 
   def build_commit_note(commit)
-    notes.new(commit_id: commit.id, noteable_type: "Commit")
+    notes.new(commit_id: commit.id, noteable_type: 'Commit')
   end
 
   def last_activity
@@ -345,8 +348,8 @@ class Project < ActiveRecord::Base
   end
 
   def avatar_type
-    unless avatar.image?
-      errors.add :avatar, 'only images allowed'
+    unless self.avatar.image?
+      self.errors.add :avatar, 'only images allowed'
     end
   end
 
@@ -384,7 +387,7 @@ class Project < ActiveRecord::Base
   end
 
   def team_member_by_name_or_email(name = nil, email = nil)
-    user = users.where("name like ? or email like ?", name, email).first
+    user = users.where('name like ? or email like ?', name, email).first
     project_members.where(user: user) if user
   end
 
@@ -396,7 +399,7 @@ class Project < ActiveRecord::Base
   def name_with_namespace
     @name_with_namespace ||= begin
                                if namespace
-                                 namespace.human_name + " / " + name
+                                 namespace.human_name + ' / ' + name
                                else
                                  name
                                end
@@ -431,7 +434,7 @@ class Project < ActiveRecord::Base
   def valid_repo?
     repository.exists?
   rescue
-    errors.add(:path, "Invalid repository path")
+    errors.add(:path, 'Invalid repository path')
     false
   end
 
@@ -490,7 +493,7 @@ class Project < ActiveRecord::Base
   end
 
   def http_url_to_repo
-    [gitlab_config.url, "/", path_with_namespace, ".git"].join('')
+    [gitlab_config.url, '/', path_with_namespace, '.git'].join('')
   end
 
   # Check if current branch name is marked as protected in the system
@@ -618,7 +621,7 @@ class Project < ActiveRecord::Base
     if gitlab_shell.add_repository(path_with_namespace)
       true
     else
-      errors.add(:base, "Failed to create repository")
+      errors.add(:base, 'Failed to create repository')
       false
     end
   end
@@ -631,7 +634,7 @@ class Project < ActiveRecord::Base
     ProjectWiki.new(self, self.owner).wiki
     true
   rescue ProjectWiki::CouldNotCreateWikiError => ex
-    errors.add(:base, "Failed create wiki")
+    errors.add(:base, 'Failed create wiki')
     false
   end
 end
diff --git a/app/services/projects/fork_service.rb b/app/services/projects/fork_service.rb
index 8bb0fcf9474a1f222b1eb170a3a979e96774dc6e..6b0d4aca3e1a4c7ad63dad2f18bf462f28c571e2 100644
--- a/app/services/projects/fork_service.rb
+++ b/app/services/projects/fork_service.rb
@@ -14,7 +14,7 @@ module Projects
       project.name = @from_project.name
       project.path = @from_project.path
       project.creator = @current_user
-      if @from_project.avatar && @from_project.avatar.image?
+      if @from_project.avatar.present? && @from_project.avatar.image?
         project.avatar = @from_project.avatar
       end
 
@@ -42,16 +42,16 @@ module Projects
             end
             #Now fork the repo
             unless gitlab_shell.fork_repository(@from_project.path_with_namespace, project.namespace.path)
-              raise "forking failed in gitlab-shell"
+              raise 'forking failed in gitlab-shell'
             end
             project.ensure_satellite_exists
           end
         rescue => ex
-          project.errors.add(:base, "Fork transaction failed.")
+          project.errors.add(:base, 'Fork transaction failed.')
           project.destroy
         end
       else
-        project.errors.add(:base, "Invalid fork destination")
+        project.errors.add(:base, 'Invalid fork destination')
       end
 
       project
diff --git a/app/views/groups/_projects.html.haml b/app/views/groups/_projects.html.haml
index 2c65b3049e3b9c59ed6df12d8f21836455be8f25..2716ebf326ba119c899da9c2a96e45719bceed3e 100644
--- a/app/views/groups/_projects.html.haml
+++ b/app/views/groups/_projects.html.haml
@@ -12,6 +12,8 @@
     - projects.each do |project|
       %li.project-row
         = link_to project_path(project), class: dom_class(project) do
+          .dash-project-avatar
+            = project_icon(project.to_param, alt: '', class: 'avatar s24')
           .dash-project-access-icon
             = visibility_level_icon(project.visibility_level)
           %span.str-truncated
diff --git a/app/views/projects/edit.html.haml b/app/views/projects/edit.html.haml
index fc6499de3e24225aeae11281a108ec4106d6cc6d..28de1a778a73e45fc4af568b6826ac82f5a3b1f6 100644
--- a/app/views/projects/edit.html.haml
+++ b/app/views/projects/edit.html.haml
@@ -87,7 +87,10 @@
             .form-group
               .col-sm-2
               .col-sm-10
-                = project_icon(@project.to_param, alt: '', class: 'avatar s160', only_uploaded: true)
+                - if @project.avatar?
+                  = project_icon(@project.to_param, alt: '', class: 'avatar s160')
+                - else
+                  = project_icon(@project.to_param, alt: '', class: 'avatar s160', only_uploaded: true)
                 %p.light
                   - if @project.avatar_in_git
                     Project avatar in repository: #{ @project.avatar_in_git }
@@ -102,7 +105,7 @@
                 &nbsp;
                 %span.file_name.js-avatar-filename File name...
                 = f.file_field :avatar, class: "js-project-avatar-input hidden"
-                .light The maximum file size allowed is 100KB.
+                .light The maximum file size allowed is 200KB.
                 - if @project.avatar?
                   %hr
                   = link_to 'Remove avatar', project_avatar_path(@project), data: { confirm: "Project avatar will be removed. Are you sure?"}, method: :delete, class: "btn btn-remove btn-small remove-avatar"
diff --git a/config/routes.rb b/config/routes.rb
index 32378665c943091f6ca45df33f44bd9b58df1bb9..3ee4f07ec7202e8145d1edfb8653f6567b83275b 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -10,8 +10,8 @@ Gitlab::Application.routes.draw do
   #
   # Search
   #
-  get 'search' => "search#show"
-  get 'search/autocomplete' => "search#autocomplete", as: :search_autocomplete
+  get 'search' => 'search#show'
+  get 'search/autocomplete' => 'search#autocomplete', as: :search_autocomplete
 
   # API
   API::API.logger Rails.logger
@@ -20,9 +20,9 @@ Gitlab::Application.routes.draw do
   # Get all keys of user
   get ':username.keys' => 'profiles/keys#get_keys' , constraints: { username: /.*/ }
 
-  constraint = lambda { |request| request.env["warden"].authenticate? and request.env['warden'].user.admin? }
+  constraint = lambda { |request| request.env['warden'].authenticate? and request.env['warden'].user.admin? }
   constraints constraint do
-    mount Sidekiq::Web, at: "/admin/sidekiq", as: :sidekiq
+    mount Sidekiq::Web, at: '/admin/sidekiq', as: :sidekiq
   end
 
   # Enable Grack support
@@ -46,10 +46,10 @@ Gitlab::Application.routes.draw do
   #
   resources :snippets do
     member do
-      get "raw"
+      get 'raw'
     end
   end
-  get "/s/:username" => "snippets#user_index", as: :user_snippets, constraints: { username: /.*/ }
+  get '/s/:username' => 'snippets#user_index', as: :user_snippets, constraints: { username: /.*/ }
 
   #
   # Github importer area
@@ -72,12 +72,12 @@ Gitlab::Application.routes.draw do
     end
 
     resources :groups, only: [:index]
-    root to: "projects#trending"
+    root to: 'projects#trending'
   end
 
   # Compatibility with old routing
-  get 'public' => "explore/projects#index"
-  get 'public/projects' => "explore/projects#index"
+  get 'public' => 'explore/projects#index'
+  get 'public/projects' => 'explore/projects#index'
 
   #
   # Attachments serving
@@ -122,7 +122,7 @@ Gitlab::Application.routes.draw do
 
     resource :application_settings, only: [:show, :update]
 
-    root to: "dashboard#index"
+    root to: 'dashboard#index'
   end
 
   #
@@ -163,7 +163,7 @@ Gitlab::Application.routes.draw do
   #
   # Dashboard Area
   #
-  resource :dashboard, controller: "dashboard", only: [:show] do
+  resource :dashboard, controller: 'dashboard', only: [:show] do
     member do
       get :projects
       get :issues
@@ -194,12 +194,12 @@ Gitlab::Application.routes.draw do
   devise_for :users, controllers: { omniauth_callbacks: :omniauth_callbacks, registrations: :registrations , passwords: :passwords, sessions: :sessions, confirmations: :confirmations }
 
   devise_scope :user do
-    get "/users/auth/:provider/omniauth_error" => "omniauth_callbacks#omniauth_error", as: :omniauth_error
+    get '/users/auth/:provider/omniauth_error' => 'omniauth_callbacks#omniauth_error', as: :omniauth_error
   end
   #
   # Project Area
   #
-  resources :projects, constraints: { id: /[a-zA-Z.0-9_\-]+\/[a-zA-Z.0-9_\-]+/ }, except: [:new, :create, :index], path: "/" do
+  resources :projects, constraints: { id: /[a-zA-Z.0-9_\-]+\/[a-zA-Z.0-9_\-]+/ }, except: [:new, :create, :index], path: '/' do
     member do
       put :transfer
       post :archive
@@ -220,6 +220,7 @@ Gitlab::Application.routes.draw do
         # Cannot be GET to differentiate from GET paths that end in preview.
         post :preview, on: :member
       end
+      resource  :avatar,    only: [:show, :destroy]
       resources :new_tree,  only: [:show, :update], constraints: {id: /.+/}, path: 'new'
       resources :commit,    only: [:show], constraints: {id: /[[:alnum:]]{6,40}/}
       resources :commits,   only: [:show], constraints: {id: /(?:[^.]|\.(?!atom$))+/, format: /atom/}
@@ -237,7 +238,7 @@ Gitlab::Application.routes.draw do
 
       resources :snippets, constraints: {id: /\d+/} do
         member do
-          get "raw"
+          get 'raw'
         end
       end
 
@@ -249,7 +250,7 @@ Gitlab::Application.routes.draw do
         end
 
         member do
-          get "history"
+          get 'history'
         end
       end
 
@@ -258,7 +259,7 @@ Gitlab::Application.routes.draw do
 
       resource :repository, only: [:show, :create] do
         member do
-          get "archive", constraints: { format: Gitlab::Regex.archive_formats_regex }
+          get 'archive', constraints: { format: Gitlab::Regex.archive_formats_regex }
         end
       end
 
@@ -281,13 +282,13 @@ Gitlab::Application.routes.draw do
 
       resources :refs, only: [] do
         collection do
-          get "switch"
+          get 'switch'
         end
 
         member do
           # tree viewer logs
-          get "logs_tree", constraints: { id: Gitlab::Regex.git_reference_regex }
-          get "logs_tree/:path" => "refs#logs_tree",
+          get 'logs_tree', constraints: { id: Gitlab::Regex.git_reference_regex }
+          get 'logs_tree/:path' => 'refs#logs_tree',
             as: :logs_file,
             constraints: {
               id:   Gitlab::Regex.git_reference_regex,
@@ -354,11 +355,10 @@ Gitlab::Application.routes.draw do
         end
       end
 
-      resource :avatar, only: [:show, :destroy]
     end
   end
 
-  get ':id' => "namespaces#show", constraints: {id: /(?:[^.]|\.(?!atom$))+/, format: /atom/}
+  get ':id' => 'namespaces#show', constraints: {id: /(?:[^.]|\.(?!atom$))+/, format: /atom/}
 
-  root to: "dashboard#show"
+  root to: 'dashboard#show'
 end
diff --git a/features/steps/project/project.rb b/features/steps/project/project.rb
index 455539d7471d31dc2e4d80ecaa17e218e6dd97aa..033d45e0253e2bc5b7059270f368ee2e5874c794 100644
--- a/features/steps/project/project.rb
+++ b/features/steps/project/project.rb
@@ -68,7 +68,7 @@ class Spinach::Features::Project < Spinach::FeatureSteps
 
   step 'I should see project "Shop" version' do
     within '.project-side' do
-      page.should have_content "Version: 6.7.0.pre"
+      page.should have_content 'Version: 6.7.0.pre'
     end
   end
 
@@ -86,12 +86,12 @@ class Spinach::Features::Project < Spinach::FeatureSteps
   end
 
   step 'I should see project "Forum" README' do
-    page.should have_link "README.md"
-    page.should have_content "Sample repo for testing gitlab features"
+    page.should have_link 'README.md'
+    page.should have_content 'Sample repo for testing gitlab features'
   end
 
   step 'I should see project "Shop" README' do
-    page.should have_link "README.md"
-    page.should have_content "testme"
+    page.should have_link 'README.md'
+    page.should have_content 'testme'
   end
 end
diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb
index ed50bf7c75d3e7aad1906c2e5b480a0d7ab3269e..a46883b3c9997330f4257249f04f651165df0156 100644
--- a/spec/helpers/application_helper_spec.rb
+++ b/spec/helpers/application_helper_spec.rb
@@ -6,15 +6,15 @@ describe ApplicationHelper do
       controller.stub(:controller_name).and_return('foo')
     end
 
-    it "returns true when controller matches argument" do
+    it 'returns true when controller matches argument' do
       current_controller?(:foo).should be_true
     end
 
-    it "returns false when controller does not match argument" do
+    it 'returns false when controller does not match argument' do
       current_controller?(:bar).should_not be_true
     end
 
-    it "should take any number of arguments" do
+    it 'should take any number of arguments' do
       current_controller?(:baz, :bar).should_not be_true
       current_controller?(:baz, :bar, :foo).should be_true
     end
@@ -25,34 +25,34 @@ describe ApplicationHelper do
       allow(self).to receive(:action_name).and_return('foo')
     end
 
-    it "returns true when action matches argument" do
+    it 'returns true when action matches argument' do
       current_action?(:foo).should be_true
     end
 
-    it "returns false when action does not match argument" do
+    it 'returns false when action does not match argument' do
       current_action?(:bar).should_not be_true
     end
 
-    it "should take any number of arguments" do
+    it 'should take any number of arguments' do
       current_action?(:baz, :bar).should_not be_true
       current_action?(:baz, :bar, :foo).should be_true
     end
   end
 
-  describe "group_icon" do
+  describe 'group_icon' do
     avatar_file_path = File.join(Rails.root, 'public', 'gitlab_logo.png')
 
-    it "should return an url for the avatar" do
+    it 'should return an url for the avatar' do
       group = create(:group)
       group.avatar = File.open(avatar_file_path)
       group.save!
       group_icon(group.path).to_s.should match("/uploads/group/avatar/#{ group.id }/gitlab_logo.png")
     end
 
-    it "should give default avatar_icon when no avatar is present" do
+    it 'should give default avatar_icon when no avatar is present' do
       group = create(:group)
       group.save!
-      group_icon(group.path).should match("group_avatar.png")
+      group_icon(group.path).should match('group_avatar.png')
     end
   end
 
@@ -64,10 +64,10 @@ describe ApplicationHelper do
       project.avatar = File.open(avatar_file_path)
       project.save!
       project_icon(project.to_param).to_s.should ==
-        "/uploads/project/avatar/#{ project.id }/gitlab_logo.png"
+        "<img alt=\"Gitlab logo\" src=\"/uploads/project/avatar/#{ project.id }/gitlab_logo.png\" />"
     end
 
-    it "should give uploaded icon when present" do
+    it 'should give uploaded icon when present' do
       project = create(:project)
       project.save!
 
@@ -78,18 +78,18 @@ describe ApplicationHelper do
     end
   end
 
-  describe "avatar_icon" do
+  describe 'avatar_icon' do
     avatar_file_path = File.join(Rails.root, 'public', 'gitlab_logo.png')
 
-    it "should return an url for the avatar" do
+    it 'should return an url for the avatar' do
       user = create(:user)
       user.avatar = File.open(avatar_file_path)
       user.save!
       avatar_icon(user.email).to_s.should match("/uploads/user/avatar/#{ user.id }/gitlab_logo.png")
     end
 
-    it "should return an url for the avatar with relative url" do
-      Gitlab.config.gitlab.stub(relative_url_root: "/gitlab")
+    it 'should return an url for the avatar with relative url' do
+      Gitlab.config.gitlab.stub(relative_url_root: '/gitlab')
       Gitlab.config.gitlab.stub(url: Settings.send(:build_gitlab_url))
 
       user = create(:user)
@@ -98,58 +98,58 @@ describe ApplicationHelper do
       avatar_icon(user.email).to_s.should match("/gitlab/uploads/user/avatar/#{ user.id }/gitlab_logo.png")
     end
 
-    it "should call gravatar_icon when no avatar is present" do
+    it 'should call gravatar_icon when no avatar is present' do
       user = create(:user, email: 'test@example.com')
       user.save!
-      avatar_icon(user.email).to_s.should == "http://www.gravatar.com/avatar/55502f40dc8b7c769880b10874abc9d0?s=40&d=identicon"
+      avatar_icon(user.email).to_s.should == 'http://www.gravatar.com/avatar/55502f40dc8b7c769880b10874abc9d0?s=40&d=identicon'
     end
   end
 
-  describe "gravatar_icon" do
+  describe 'gravatar_icon' do
     let(:user_email) { 'user@email.com' }
 
-    it "should return a generic avatar path when Gravatar is disabled" do
+    it 'should return a generic avatar path when Gravatar is disabled' do
       ApplicationSetting.any_instance.stub(gravatar_enabled?: false)
       gravatar_icon(user_email).should match('no_avatar.png')
     end
 
-    it "should return a generic avatar path when email is blank" do
+    it 'should return a generic avatar path when email is blank' do
       gravatar_icon('').should match('no_avatar.png')
     end
 
-    it "should return default gravatar url" do
+    it 'should return default gravatar url' do
       Gitlab.config.gitlab.stub(https: false)
       gravatar_icon(user_email).should match('http://www.gravatar.com/avatar/b58c6f14d292556214bd64909bcdb118')
     end
 
-    it "should use SSL when appropriate" do
+    it 'should use SSL when appropriate' do
       Gitlab.config.gitlab.stub(https: true)
       gravatar_icon(user_email).should match('https://secure.gravatar.com')
     end
 
-    it "should return custom gravatar path when gravatar_url is set" do
+    it 'should return custom gravatar path when gravatar_url is set' do
       allow(self).to receive(:request).and_return(double(:ssl? => false))
       Gitlab.config.gravatar.stub(:plain_url).and_return('http://example.local/?s=%{size}&hash=%{hash}')
       gravatar_icon(user_email, 20).should == 'http://example.local/?s=20&hash=b58c6f14d292556214bd64909bcdb118'
     end
 
-    it "should accept a custom size" do
+    it 'should accept a custom size' do
       allow(self).to receive(:request).and_return(double(:ssl? => false))
       gravatar_icon(user_email, 64).should match(/\?s=64/)
     end
 
-    it "should use default size when size is wrong" do
+    it 'should use default size when size is wrong' do
       allow(self).to receive(:request).and_return(double(:ssl? => false))
       gravatar_icon(user_email, nil).should match(/\?s=40/)
     end
 
-    it "should be case insensitive" do
+    it 'should be case insensitive' do
       allow(self).to receive(:request).and_return(double(:ssl? => false))
-      gravatar_icon(user_email).should == gravatar_icon(user_email.upcase + " ")
+      gravatar_icon(user_email).should == gravatar_icon(user_email.upcase + ' ')
     end
   end
 
-  describe "grouped_options_refs" do
+  describe 'grouped_options_refs' do
     # Override Rails' grouped_options_for_select helper since HTML is harder to work with
     def grouped_options_for_select(options, *args)
       options
@@ -162,17 +162,17 @@ describe ApplicationHelper do
       @project = create(:project)
     end
 
-    it "includes a list of branch names" do
+    it 'includes a list of branch names' do
       options[0][0].should == 'Branches'
       options[0][1].should include('master', 'feature')
     end
 
-    it "includes a list of tag names" do
+    it 'includes a list of tag names' do
       options[1][0].should == 'Tags'
       options[1][1].should include('v1.0.0','v1.1.0')
     end
 
-    it "includes a specific commit ref if defined" do
+    it 'includes a specific commit ref if defined' do
       # Must be an instance variable
       @ref = '2ed06dc41dbb5936af845b87d79e05bbf24c73b8'
 
@@ -180,26 +180,26 @@ describe ApplicationHelper do
       options[2][1].should == [@ref]
     end
 
-    it "sorts tags in a natural order" do
+    it 'sorts tags in a natural order' do
       # Stub repository.tag_names to make sure we get some valid testing data
-      expect(@project.repository).to receive(:tag_names).and_return(["v1.0.9", "v1.0.10", "v2.0", "v3.1.4.2", "v1.0.9a"])
+      expect(@project.repository).to receive(:tag_names).and_return(['v1.0.9', 'v1.0.10', 'v2.0', 'v3.1.4.2', 'v1.0.9a'])
 
-      options[1][1].should == ["v3.1.4.2", "v2.0", "v1.0.10", "v1.0.9a", "v1.0.9"]
+      options[1][1].should == ['v3.1.4.2', 'v2.0', 'v1.0.10', 'v1.0.9a', 'v1.0.9']
     end
   end
 
-  describe "user_color_scheme_class" do
-    context "with current_user is nil" do
-      it "should return a string" do
+  describe 'user_color_scheme_class' do
+    context 'with current_user is nil' do
+      it 'should return a string' do
         allow(self).to receive(:current_user).and_return(nil)
         user_color_scheme_class.should be_kind_of(String)
       end
     end
 
-    context "with a current_user" do
+    context 'with a current_user' do
       (1..5).each do |color_scheme_id|
         context "with color_scheme_id == #{color_scheme_id}" do
-          it "should return a string" do
+          it 'should return a string' do
             current_user = double(:color_scheme_id => color_scheme_id)
             allow(self).to receive(:current_user).and_return(current_user)
             user_color_scheme_class.should be_kind_of(String)
@@ -209,43 +209,43 @@ describe ApplicationHelper do
     end
   end
 
-  describe "simple_sanitize" do
+  describe 'simple_sanitize' do
     let(:a_tag) { '<a href="#">Foo</a>' }
 
-    it "allows the a tag" do
+    it 'allows the a tag' do
       simple_sanitize(a_tag).should == a_tag
     end
 
-    it "allows the span tag" do
+    it 'allows the span tag' do
       input = '<span class="foo">Bar</span>'
       simple_sanitize(input).should == input
     end
 
-    it "disallows other tags" do
+    it 'disallows other tags' do
       input = "<strike><b>#{a_tag}</b></strike>"
       simple_sanitize(input).should == a_tag
     end
   end
 
-  describe "link_to" do
+  describe 'link_to' do
 
-    it "should not include rel=nofollow for internal links" do
-      expect(link_to("Home", root_path)).to eq("<a href=\"/\">Home</a>")
+    it 'should not include rel=nofollow for internal links' do
+      expect(link_to('Home', root_path)).to eq("<a href=\"/\">Home</a>")
     end
 
-    it "should include rel=nofollow for external links" do
-      expect(link_to("Example", "http://www.example.com")).to eq("<a href=\"http://www.example.com\" rel=\"nofollow\">Example</a>")
+    it 'should include rel=nofollow for external links' do
+      expect(link_to('Example', 'http://www.example.com')).to eq("<a href=\"http://www.example.com\" rel=\"nofollow\">Example</a>")
     end
 
-    it "should include re=nofollow for external links and honor existing html_options" do
+    it 'should include re=nofollow for external links and honor existing html_options' do
       expect(
-        link_to("Example", "http://www.example.com", class: "toggle", data: {toggle: "dropdown"})
+        link_to('Example', 'http://www.example.com', class: 'toggle', data: {toggle: 'dropdown'})
       ).to eq("<a class=\"toggle\" data-toggle=\"dropdown\" href=\"http://www.example.com\" rel=\"nofollow\">Example</a>")
     end
 
-    it "should include rel=nofollow for external links and preserver other rel values" do
+    it 'should include rel=nofollow for external links and preserver other rel values' do
       expect(
-        link_to("Example", "http://www.example.com", rel: "noreferrer")
+        link_to('Example', 'http://www.example.com', rel: 'noreferrer')
       ).to eq("<a href=\"http://www.example.com\" rel=\"noreferrer nofollow\">Example</a>")
     end
   end
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index 87d26f98b44cc26d2317127020fb0cf4223b39a3..c9bdeb43f6f292dff5294387a5069fddab55c6dd 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -14,7 +14,7 @@
 #  merge_requests_enabled :boolean          default(TRUE), not null
 #  wiki_enabled           :boolean          default(TRUE), not null
 #  namespace_id           :integer
-#  issues_tracker         :string(255)      default("gitlab"), not null
+#  issues_tracker         :string(255)      default('gitlab'), not null
 #  issues_tracker_id      :string(255)
 #  snippets_enabled       :boolean          default(TRUE), not null
 #  last_activity_at       :datetime
@@ -32,7 +32,7 @@
 require 'spec_helper'
 
 describe Project do
-  describe "Associations" do
+  describe 'Associations' do
     it { should belong_to(:group) }
     it { should belong_to(:namespace) }
     it { should belong_to(:creator).class_name('User') }
@@ -53,10 +53,10 @@ describe Project do
     it { should have_one(:pushover_service).dependent(:destroy) }
   end
 
-  describe "Mass assignment" do
+  describe 'Mass assignment' do
   end
 
-  describe "Validation" do
+  describe 'Validation' do
     let!(:project) { create(:project) }
 
     it { should validate_presence_of(:name) }
@@ -71,7 +71,7 @@ describe Project do
     it { should ensure_length_of(:issues_tracker_id).is_within(0..255) }
     it { should validate_presence_of(:namespace) }
 
-    it "should not allow new projects beyond user limits" do
+    it 'should not allow new projects beyond user limits' do
       project2 = build(:project)
       project2.stub(:creator).and_return(double(can_create_project?: false, projects_limit: 0).as_null_object)
       project2.should_not be_valid
@@ -79,7 +79,7 @@ describe Project do
     end
   end
 
-  describe "Respond to" do
+  describe 'Respond to' do
     it { should respond_to(:url_to_repo) }
     it { should respond_to(:repo_exists?) }
     it { should respond_to(:satellite) }
@@ -90,27 +90,27 @@ describe Project do
     it { should respond_to(:path_with_namespace) }
   end
 
-  it "should return valid url to repo" do
-    project = Project.new(path: "somewhere")
-    project.url_to_repo.should == Gitlab.config.gitlab_shell.ssh_path_prefix + "somewhere.git"
+  it 'should return valid url to repo' do
+    project = Project.new(path: 'somewhere')
+    project.url_to_repo.should == Gitlab.config.gitlab_shell.ssh_path_prefix + 'somewhere.git'
   end
 
-  it "returns the full web URL for this repo" do
-    project = Project.new(path: "somewhere")
+  it 'returns the full web URL for this repo' do
+    project = Project.new(path: 'somewhere')
     project.web_url.should == "#{Gitlab.config.gitlab.url}/somewhere"
   end
 
-  it "returns the web URL without the protocol for this repo" do
-    project = Project.new(path: "somewhere")
-    project.web_url_without_protocol.should == "#{Gitlab.config.gitlab.url.split("://")[1]}/somewhere"
+  it 'returns the web URL without the protocol for this repo' do
+    project = Project.new(path: 'somewhere')
+    project.web_url_without_protocol.should == "#{Gitlab.config.gitlab.url.split('://')[1]}/somewhere"
   end
 
-  describe "last_activity methods" do
+  describe 'last_activity methods' do
     let(:project) { create(:project) }
     let(:last_event) { double(created_at: Time.now) }
 
-    describe "last_activity" do
-      it "should alias last_activity to last_event" do
+    describe 'last_activity' do
+      it 'should alias last_activity to last_event' do
         project.stub(last_event: last_event)
         project.last_activity.should == last_event
       end
@@ -135,13 +135,13 @@ describe Project do
     let(:prev_commit_id) { merge_request.commits.last.id }
     let(:commit_id) { merge_request.commits.first.id }
 
-    it "should close merge request if last commit from source branch was pushed to target branch" do
+    it 'should close merge request if last commit from source branch was pushed to target branch' do
       project.update_merge_requests(prev_commit_id, commit_id, "refs/heads/#{merge_request.target_branch}", key.user)
       merge_request.reload
       merge_request.merged?.should be_true
     end
 
-    it "should update merge request commits with new one if pushed to source branch" do
+    it 'should update merge request commits with new one if pushed to source branch' do
       project.update_merge_requests(prev_commit_id, commit_id, "refs/heads/#{merge_request.source_branch}", key.user)
       merge_request.reload
       merge_request.last_commit.id.should == commit_id
@@ -167,14 +167,14 @@ describe Project do
         @project = create(:project, name: 'gitlabhq', namespace: @group)
       end
 
-      it { @project.to_param.should == "gitlab/gitlabhq" }
+      it { @project.to_param.should == 'gitlab/gitlabhq' }
     end
   end
 
   describe :repository do
     let(:project) { create(:project) }
 
-    it "should return valid repo" do
+    it 'should return valid repo' do
       project.repository.should be_kind_of(Repository)
     end
   end
@@ -185,15 +185,15 @@ describe Project do
     let(:not_existed_issue) { create(:issue) }
     let(:ext_project) { create(:redmine_project) }
 
-    it "should be true or if used internal tracker and issue exists" do
+    it 'should be true or if used internal tracker and issue exists' do
       project.issue_exists?(existed_issue.iid).should be_true
     end
 
-    it "should be false or if used internal tracker and issue not exists" do
+    it 'should be false or if used internal tracker and issue not exists' do
       project.issue_exists?(not_existed_issue.iid).should be_false
     end
 
-    it "should always be true if used other tracker" do
+    it 'should always be true if used other tracker' do
       ext_project.issue_exists?(rand(100)).should be_true
     end
   end
@@ -202,11 +202,11 @@ describe Project do
     let(:project) { create(:project) }
     let(:ext_project) { create(:redmine_project) }
 
-    it "should be true if used internal tracker" do
+    it 'should be true if used internal tracker' do
       project.used_default_issues_tracker?.should be_true
     end
 
-    it "should be false if used other tracker" do
+    it 'should be false if used other tracker' do
       ext_project.used_default_issues_tracker?.should be_false
     end
   end
@@ -215,15 +215,15 @@ describe Project do
     let(:project) { create(:project) }
     let(:ext_project) { create(:redmine_project) }
 
-    it "should be true for projects with external issues tracker if issues enabled" do
+    it 'should be true for projects with external issues tracker if issues enabled' do
       ext_project.can_have_issues_tracker_id?.should be_true
     end
 
-    it "should be false for projects with internal issue tracker if issues enabled" do
+    it 'should be false for projects with internal issue tracker if issues enabled' do
       project.can_have_issues_tracker_id?.should be_false
     end
 
-    it "should be always false if issues disabled" do
+    it 'should be always false if issues disabled' do
       project.issues_enabled = false
       ext_project.issues_enabled = false
 
diff --git a/spec/routing/project_routing_spec.rb b/spec/routing/project_routing_spec.rb
index 67705c6cb424d61dc1ab818fda741d4f8c20a95b..8191d1fb9c4ca50fe2ca77b0c597d8d9b4a60ef7 100644
--- a/spec/routing/project_routing_spec.rb
+++ b/spec/routing/project_routing_spec.rb
@@ -12,43 +12,43 @@ require 'spec_helper'
 # Examples
 #
 #   # Default behavior
-#   it_behaves_like "RESTful project resources" do
+#   it_behaves_like 'RESTful project resources' do
 #     let(:controller) { 'issues' }
 #   end
 #
 #   # Customizing actions
-#   it_behaves_like "RESTful project resources" do
+#   it_behaves_like 'RESTful project resources' do
 #     let(:actions)    { [:index] }
 #     let(:controller) { 'issues' }
 #   end
-shared_examples "RESTful project resources" do
+shared_examples 'RESTful project resources' do
   let(:actions) { [:index, :create, :new, :edit, :show, :update, :destroy] }
 
-  it "to #index" do
+  it 'to #index' do
     get("/gitlab/gitlabhq/#{controller}").should route_to("projects/#{controller}#index", project_id: 'gitlab/gitlabhq') if actions.include?(:index)
   end
 
-  it "to #create" do
+  it 'to #create' do
     post("/gitlab/gitlabhq/#{controller}").should route_to("projects/#{controller}#create", project_id: 'gitlab/gitlabhq') if actions.include?(:create)
   end
 
-  it "to #new" do
+  it 'to #new' do
     get("/gitlab/gitlabhq/#{controller}/new").should route_to("projects/#{controller}#new", project_id: 'gitlab/gitlabhq') if actions.include?(:new)
   end
 
-  it "to #edit" do
+  it 'to #edit' do
     get("/gitlab/gitlabhq/#{controller}/1/edit").should route_to("projects/#{controller}#edit", project_id: 'gitlab/gitlabhq', id: '1') if actions.include?(:edit)
   end
 
-  it "to #show" do
+  it 'to #show' do
     get("/gitlab/gitlabhq/#{controller}/1").should route_to("projects/#{controller}#show", project_id: 'gitlab/gitlabhq', id: '1') if actions.include?(:show)
   end
 
-  it "to #update" do
+  it 'to #update' do
     put("/gitlab/gitlabhq/#{controller}/1").should route_to("projects/#{controller}#update", project_id: 'gitlab/gitlabhq', id: '1') if actions.include?(:update)
   end
 
-  it "to #destroy" do
+  it 'to #destroy' do
     delete("/gitlab/gitlabhq/#{controller}/1").should route_to("projects/#{controller}#destroy", project_id: 'gitlab/gitlabhq', id: '1') if actions.include?(:destroy)
   end
 end
@@ -61,33 +61,33 @@ end
 #                          PUT    /:id(.:format)          projects#update
 #                          DELETE /:id(.:format)          projects#destroy
 # markdown_preview_project GET    /:id/markdown_preview(.:format) projects#markdown_preview
-describe ProjectsController, "routing" do
-  it "to #create" do
-    post("/projects").should route_to('projects#create')
+describe ProjectsController, 'routing' do
+  it 'to #create' do
+    post('/projects').should route_to('projects#create')
   end
 
-  it "to #new" do
-    get("/projects/new").should route_to('projects#new')
+  it 'to #new' do
+    get('/projects/new').should route_to('projects#new')
   end
 
-  it "to #edit" do
-    get("/gitlab/gitlabhq/edit").should route_to('projects#edit', id: 'gitlab/gitlabhq')
+  it 'to #edit' do
+    get('/gitlab/gitlabhq/edit').should route_to('projects#edit', id: 'gitlab/gitlabhq')
   end
 
-  it "to #autocomplete_sources" do
-    get('/gitlab/gitlabhq/autocomplete_sources').should route_to('projects#autocomplete_sources', id: "gitlab/gitlabhq")
+  it 'to #autocomplete_sources' do
+    get('/gitlab/gitlabhq/autocomplete_sources').should route_to('projects#autocomplete_sources', id: 'gitlab/gitlabhq')
   end
 
-  it "to #show" do
-    get("/gitlab/gitlabhq").should route_to('projects#show', id: 'gitlab/gitlabhq')
+  it 'to #show' do
+    get('/gitlab/gitlabhq').should route_to('projects#show', id: 'gitlab/gitlabhq')
   end
 
-  it "to #update" do
-    put("/gitlab/gitlabhq").should route_to('projects#update', id: 'gitlab/gitlabhq')
+  it 'to #update' do
+    put('/gitlab/gitlabhq').should route_to('projects#update', id: 'gitlab/gitlabhq')
   end
 
-  it "to #destroy" do
-    delete("/gitlab/gitlabhq").should route_to('projects#destroy', id: 'gitlab/gitlabhq')
+  it 'to #destroy' do
+    delete('/gitlab/gitlabhq').should route_to('projects#destroy', id: 'gitlab/gitlabhq')
   end
 
   it 'to #markdown_preview' do
@@ -103,16 +103,16 @@ end
 #    edit_project_wiki GET    /:project_id/wikis/:id/edit(.:format)    projects/wikis#edit
 #         project_wiki GET    /:project_id/wikis/:id(.:format)         projects/wikis#show
 #                      DELETE /:project_id/wikis/:id(.:format)         projects/wikis#destroy
-describe Projects::WikisController, "routing" do
-  it "to #pages" do
-    get("/gitlab/gitlabhq/wikis/pages").should route_to('projects/wikis#pages', project_id: 'gitlab/gitlabhq')
+describe Projects::WikisController, 'routing' do
+  it 'to #pages' do
+    get('/gitlab/gitlabhq/wikis/pages').should route_to('projects/wikis#pages', project_id: 'gitlab/gitlabhq')
   end
 
-  it "to #history" do
-    get("/gitlab/gitlabhq/wikis/1/history").should route_to('projects/wikis#history', project_id: 'gitlab/gitlabhq', id: '1')
+  it 'to #history' do
+    get('/gitlab/gitlabhq/wikis/1/history').should route_to('projects/wikis#history', project_id: 'gitlab/gitlabhq', id: '1')
   end
 
-  it_behaves_like "RESTful project resources" do
+  it_behaves_like 'RESTful project resources' do
     let(:actions)    { [:create, :edit, :show, :destroy] }
     let(:controller) { 'wikis' }
   end
@@ -122,45 +122,45 @@ end
 #     tags_project_repository GET    /:project_id/repository/tags(.:format)     projects/repositories#tags
 #  archive_project_repository GET    /:project_id/repository/archive(.:format)  projects/repositories#archive
 #     edit_project_repository GET    /:project_id/repository/edit(.:format)     projects/repositories#edit
-describe Projects::RepositoriesController, "routing" do
-  it "to #archive" do
-    get("/gitlab/gitlabhq/repository/archive").should route_to('projects/repositories#archive', project_id: 'gitlab/gitlabhq')
+describe Projects::RepositoriesController, 'routing' do
+  it 'to #archive' do
+    get('/gitlab/gitlabhq/repository/archive').should route_to('projects/repositories#archive', project_id: 'gitlab/gitlabhq')
   end
 
-  it "to #archive format:zip" do
-    get("/gitlab/gitlabhq/repository/archive.zip").should route_to('projects/repositories#archive', project_id: 'gitlab/gitlabhq', format: 'zip')
+  it 'to #archive format:zip' do
+    get('/gitlab/gitlabhq/repository/archive.zip').should route_to('projects/repositories#archive', project_id: 'gitlab/gitlabhq', format: 'zip')
   end
 
-  it "to #archive format:tar.bz2" do
-    get("/gitlab/gitlabhq/repository/archive.tar.bz2").should route_to('projects/repositories#archive', project_id: 'gitlab/gitlabhq', format: 'tar.bz2')
+  it 'to #archive format:tar.bz2' do
+    get('/gitlab/gitlabhq/repository/archive.tar.bz2').should route_to('projects/repositories#archive', project_id: 'gitlab/gitlabhq', format: 'tar.bz2')
   end
 
-  it "to #show" do
-    get("/gitlab/gitlabhq/repository").should route_to('projects/repositories#show', project_id: 'gitlab/gitlabhq')
+  it 'to #show' do
+    get('/gitlab/gitlabhq/repository').should route_to('projects/repositories#show', project_id: 'gitlab/gitlabhq')
   end
 end
 
-describe Projects::BranchesController, "routing" do
-  it "to #branches" do
-    get("/gitlab/gitlabhq/branches").should route_to('projects/branches#index', project_id: 'gitlab/gitlabhq')
-    delete("/gitlab/gitlabhq/branches/feature%2345").should route_to('projects/branches#destroy', project_id: 'gitlab/gitlabhq', id: 'feature#45')
-    delete("/gitlab/gitlabhq/branches/feature%2B45").should route_to('projects/branches#destroy', project_id: 'gitlab/gitlabhq', id: 'feature+45')
-    delete("/gitlab/gitlabhq/branches/feature@45").should route_to('projects/branches#destroy', project_id: 'gitlab/gitlabhq', id: 'feature@45')
-    delete("/gitlab/gitlabhq/branches/feature%2345/foo/bar/baz").should route_to('projects/branches#destroy', project_id: 'gitlab/gitlabhq', id: 'feature#45/foo/bar/baz')
-    delete("/gitlab/gitlabhq/branches/feature%2B45/foo/bar/baz").should route_to('projects/branches#destroy', project_id: 'gitlab/gitlabhq', id: 'feature+45/foo/bar/baz')
-    delete("/gitlab/gitlabhq/branches/feature@45/foo/bar/baz").should route_to('projects/branches#destroy', project_id: 'gitlab/gitlabhq', id: 'feature@45/foo/bar/baz')
+describe Projects::BranchesController, 'routing' do
+  it 'to #branches' do
+    get('/gitlab/gitlabhq/branches').should route_to('projects/branches#index', project_id: 'gitlab/gitlabhq')
+    delete('/gitlab/gitlabhq/branches/feature%2345').should route_to('projects/branches#destroy', project_id: 'gitlab/gitlabhq', id: 'feature#45')
+    delete('/gitlab/gitlabhq/branches/feature%2B45').should route_to('projects/branches#destroy', project_id: 'gitlab/gitlabhq', id: 'feature+45')
+    delete('/gitlab/gitlabhq/branches/feature@45').should route_to('projects/branches#destroy', project_id: 'gitlab/gitlabhq', id: 'feature@45')
+    delete('/gitlab/gitlabhq/branches/feature%2345/foo/bar/baz').should route_to('projects/branches#destroy', project_id: 'gitlab/gitlabhq', id: 'feature#45/foo/bar/baz')
+    delete('/gitlab/gitlabhq/branches/feature%2B45/foo/bar/baz').should route_to('projects/branches#destroy', project_id: 'gitlab/gitlabhq', id: 'feature+45/foo/bar/baz')
+    delete('/gitlab/gitlabhq/branches/feature@45/foo/bar/baz').should route_to('projects/branches#destroy', project_id: 'gitlab/gitlabhq', id: 'feature@45/foo/bar/baz')
   end
 end
 
-describe Projects::TagsController, "routing" do
-  it "to #tags" do
-    get("/gitlab/gitlabhq/tags").should route_to('projects/tags#index', project_id: 'gitlab/gitlabhq')
-    delete("/gitlab/gitlabhq/tags/feature%2345").should route_to('projects/tags#destroy', project_id: 'gitlab/gitlabhq', id: 'feature#45')
-    delete("/gitlab/gitlabhq/tags/feature%2B45").should route_to('projects/tags#destroy', project_id: 'gitlab/gitlabhq', id: 'feature+45')
-    delete("/gitlab/gitlabhq/tags/feature@45").should route_to('projects/tags#destroy', project_id: 'gitlab/gitlabhq', id: 'feature@45')
-    delete("/gitlab/gitlabhq/tags/feature%2345/foo/bar/baz").should route_to('projects/tags#destroy', project_id: 'gitlab/gitlabhq', id: 'feature#45/foo/bar/baz')
-    delete("/gitlab/gitlabhq/tags/feature%2B45/foo/bar/baz").should route_to('projects/tags#destroy', project_id: 'gitlab/gitlabhq', id: 'feature+45/foo/bar/baz')
-    delete("/gitlab/gitlabhq/tags/feature@45/foo/bar/baz").should route_to('projects/tags#destroy', project_id: 'gitlab/gitlabhq', id: 'feature@45/foo/bar/baz')
+describe Projects::TagsController, 'routing' do
+  it 'to #tags' do
+    get('/gitlab/gitlabhq/tags').should route_to('projects/tags#index', project_id: 'gitlab/gitlabhq')
+    delete('/gitlab/gitlabhq/tags/feature%2345').should route_to('projects/tags#destroy', project_id: 'gitlab/gitlabhq', id: 'feature#45')
+    delete('/gitlab/gitlabhq/tags/feature%2B45').should route_to('projects/tags#destroy', project_id: 'gitlab/gitlabhq', id: 'feature+45')
+    delete('/gitlab/gitlabhq/tags/feature@45').should route_to('projects/tags#destroy', project_id: 'gitlab/gitlabhq', id: 'feature@45')
+    delete('/gitlab/gitlabhq/tags/feature%2345/foo/bar/baz').should route_to('projects/tags#destroy', project_id: 'gitlab/gitlabhq', id: 'feature#45/foo/bar/baz')
+    delete('/gitlab/gitlabhq/tags/feature%2B45/foo/bar/baz').should route_to('projects/tags#destroy', project_id: 'gitlab/gitlabhq', id: 'feature+45/foo/bar/baz')
+    delete('/gitlab/gitlabhq/tags/feature@45/foo/bar/baz').should route_to('projects/tags#destroy', project_id: 'gitlab/gitlabhq', id: 'feature@45/foo/bar/baz')
   end
 end
 
@@ -172,8 +172,8 @@ end
 #      project_deploy_key GET    /:project_id/deploy_keys/:id(.:format)      deploy_keys#show
 #                         PUT    /:project_id/deploy_keys/:id(.:format)      deploy_keys#update
 #                         DELETE /:project_id/deploy_keys/:id(.:format)      deploy_keys#destroy
-describe Projects::DeployKeysController, "routing" do
-  it_behaves_like "RESTful project resources" do
+describe Projects::DeployKeysController, 'routing' do
+  it_behaves_like 'RESTful project resources' do
     let(:controller) { 'deploy_keys' }
   end
 end
@@ -181,8 +181,8 @@ end
 # project_protected_branches GET    /:project_id/protected_branches(.:format)     protected_branches#index
 #                            POST   /:project_id/protected_branches(.:format)     protected_branches#create
 #   project_protected_branch DELETE /:project_id/protected_branches/:id(.:format) protected_branches#destroy
-describe Projects::ProtectedBranchesController, "routing" do
-  it_behaves_like "RESTful project resources" do
+describe Projects::ProtectedBranchesController, 'routing' do
+  it_behaves_like 'RESTful project resources' do
     let(:actions)    { [:index, :create, :destroy] }
     let(:controller) { 'protected_branches' }
   end
@@ -191,21 +191,21 @@ end
 #    switch_project_refs GET    /:project_id/refs/switch(.:format)              refs#switch
 #  logs_tree_project_ref GET    /:project_id/refs/:id/logs_tree(.:format)       refs#logs_tree
 #  logs_file_project_ref GET    /:project_id/refs/:id/logs_tree/:path(.:format) refs#logs_tree
-describe Projects::RefsController, "routing" do
-  it "to #switch" do
-    get("/gitlab/gitlabhq/refs/switch").should route_to('projects/refs#switch', project_id: 'gitlab/gitlabhq')
-  end
-
-  it "to #logs_tree" do
-    get("/gitlab/gitlabhq/refs/stable/logs_tree").should             route_to('projects/refs#logs_tree', project_id: 'gitlab/gitlabhq', id: 'stable')
-    get("/gitlab/gitlabhq/refs/feature%2345/logs_tree").should             route_to('projects/refs#logs_tree', project_id: 'gitlab/gitlabhq', id: 'feature#45')
-    get("/gitlab/gitlabhq/refs/feature%2B45/logs_tree").should             route_to('projects/refs#logs_tree', project_id: 'gitlab/gitlabhq', id: 'feature+45')
-    get("/gitlab/gitlabhq/refs/feature@45/logs_tree").should             route_to('projects/refs#logs_tree', project_id: 'gitlab/gitlabhq', id: 'feature@45')
-    get("/gitlab/gitlabhq/refs/stable/logs_tree/foo/bar/baz").should route_to('projects/refs#logs_tree', project_id: 'gitlab/gitlabhq', id: 'stable', path: 'foo/bar/baz')
-    get("/gitlab/gitlabhq/refs/feature%2345/logs_tree/foo/bar/baz").should route_to('projects/refs#logs_tree', project_id: 'gitlab/gitlabhq', id: 'feature#45', path: 'foo/bar/baz')
-    get("/gitlab/gitlabhq/refs/feature%2B45/logs_tree/foo/bar/baz").should route_to('projects/refs#logs_tree', project_id: 'gitlab/gitlabhq', id: 'feature+45', path: 'foo/bar/baz')
-    get("/gitlab/gitlabhq/refs/feature@45/logs_tree/foo/bar/baz").should route_to('projects/refs#logs_tree', project_id: 'gitlab/gitlabhq', id: 'feature@45', path: 'foo/bar/baz')
-    get("/gitlab/gitlabhq/refs/stable/logs_tree/files.scss").should route_to('projects/refs#logs_tree', project_id: 'gitlab/gitlabhq', id: 'stable', path: 'files.scss')
+describe Projects::RefsController, 'routing' do
+  it 'to #switch' do
+    get('/gitlab/gitlabhq/refs/switch').should route_to('projects/refs#switch', project_id: 'gitlab/gitlabhq')
+  end
+
+  it 'to #logs_tree' do
+    get('/gitlab/gitlabhq/refs/stable/logs_tree').should             route_to('projects/refs#logs_tree', project_id: 'gitlab/gitlabhq', id: 'stable')
+    get('/gitlab/gitlabhq/refs/feature%2345/logs_tree').should             route_to('projects/refs#logs_tree', project_id: 'gitlab/gitlabhq', id: 'feature#45')
+    get('/gitlab/gitlabhq/refs/feature%2B45/logs_tree').should             route_to('projects/refs#logs_tree', project_id: 'gitlab/gitlabhq', id: 'feature+45')
+    get('/gitlab/gitlabhq/refs/feature@45/logs_tree').should             route_to('projects/refs#logs_tree', project_id: 'gitlab/gitlabhq', id: 'feature@45')
+    get('/gitlab/gitlabhq/refs/stable/logs_tree/foo/bar/baz').should route_to('projects/refs#logs_tree', project_id: 'gitlab/gitlabhq', id: 'stable', path: 'foo/bar/baz')
+    get('/gitlab/gitlabhq/refs/feature%2345/logs_tree/foo/bar/baz').should route_to('projects/refs#logs_tree', project_id: 'gitlab/gitlabhq', id: 'feature#45', path: 'foo/bar/baz')
+    get('/gitlab/gitlabhq/refs/feature%2B45/logs_tree/foo/bar/baz').should route_to('projects/refs#logs_tree', project_id: 'gitlab/gitlabhq', id: 'feature+45', path: 'foo/bar/baz')
+    get('/gitlab/gitlabhq/refs/feature@45/logs_tree/foo/bar/baz').should route_to('projects/refs#logs_tree', project_id: 'gitlab/gitlabhq', id: 'feature@45', path: 'foo/bar/baz')
+    get('/gitlab/gitlabhq/refs/stable/logs_tree/files.scss').should route_to('projects/refs#logs_tree', project_id: 'gitlab/gitlabhq', id: 'stable', path: 'files.scss')
   end
 end
 
@@ -221,36 +221,36 @@ end
 #                 project_merge_request GET    /:project_id/merge_requests/:id(.:format)                 projects/merge_requests#show
 #                                       PUT    /:project_id/merge_requests/:id(.:format)                 projects/merge_requests#update
 #                                       DELETE /:project_id/merge_requests/:id(.:format)                 projects/merge_requests#destroy
-describe Projects::MergeRequestsController, "routing" do
-  it "to #diffs" do
-    get("/gitlab/gitlabhq/merge_requests/1/diffs").should route_to('projects/merge_requests#diffs', project_id: 'gitlab/gitlabhq', id: '1')
+describe Projects::MergeRequestsController, 'routing' do
+  it 'to #diffs' do
+    get('/gitlab/gitlabhq/merge_requests/1/diffs').should route_to('projects/merge_requests#diffs', project_id: 'gitlab/gitlabhq', id: '1')
   end
 
-  it "to #automerge" do
+  it 'to #automerge' do
     post('/gitlab/gitlabhq/merge_requests/1/automerge').should route_to(
       'projects/merge_requests#automerge',
       project_id: 'gitlab/gitlabhq', id: '1'
     )
   end
 
-  it "to #automerge_check" do
-    get("/gitlab/gitlabhq/merge_requests/1/automerge_check").should route_to('projects/merge_requests#automerge_check', project_id: 'gitlab/gitlabhq', id: '1')
+  it 'to #automerge_check' do
+    get('/gitlab/gitlabhq/merge_requests/1/automerge_check').should route_to('projects/merge_requests#automerge_check', project_id: 'gitlab/gitlabhq', id: '1')
   end
 
-  it "to #branch_from" do
-    get("/gitlab/gitlabhq/merge_requests/branch_from").should route_to('projects/merge_requests#branch_from', project_id: 'gitlab/gitlabhq')
+  it 'to #branch_from' do
+    get('/gitlab/gitlabhq/merge_requests/branch_from').should route_to('projects/merge_requests#branch_from', project_id: 'gitlab/gitlabhq')
   end
 
-  it "to #branch_to" do
-    get("/gitlab/gitlabhq/merge_requests/branch_to").should route_to('projects/merge_requests#branch_to', project_id: 'gitlab/gitlabhq')
+  it 'to #branch_to' do
+    get('/gitlab/gitlabhq/merge_requests/branch_to').should route_to('projects/merge_requests#branch_to', project_id: 'gitlab/gitlabhq')
   end
 
-  it "to #show" do
-    get("/gitlab/gitlabhq/merge_requests/1.diff").should route_to('projects/merge_requests#show', project_id: 'gitlab/gitlabhq', id: '1', format: 'diff')
-    get("/gitlab/gitlabhq/merge_requests/1.patch").should route_to('projects/merge_requests#show', project_id: 'gitlab/gitlabhq', id: '1', format: 'patch')
+  it 'to #show' do
+    get('/gitlab/gitlabhq/merge_requests/1.diff').should route_to('projects/merge_requests#show', project_id: 'gitlab/gitlabhq', id: '1', format: 'diff')
+    get('/gitlab/gitlabhq/merge_requests/1.patch').should route_to('projects/merge_requests#show', project_id: 'gitlab/gitlabhq', id: '1', format: 'patch')
   end
 
-  it_behaves_like "RESTful project resources" do
+  it_behaves_like 'RESTful project resources' do
     let(:controller) { 'merge_requests' }
     let(:actions) { [:index, :create, :new, :edit, :show, :update] }
   end
@@ -264,37 +264,37 @@ end
 #      project_snippet GET    /:project_id/snippets/:id(.:format)      snippets#show
 #                      PUT    /:project_id/snippets/:id(.:format)      snippets#update
 #                      DELETE /:project_id/snippets/:id(.:format)      snippets#destroy
-describe SnippetsController, "routing" do
-  it "to #raw" do
-    get("/gitlab/gitlabhq/snippets/1/raw").should route_to('projects/snippets#raw', project_id: 'gitlab/gitlabhq', id: '1')
+describe SnippetsController, 'routing' do
+  it 'to #raw' do
+    get('/gitlab/gitlabhq/snippets/1/raw').should route_to('projects/snippets#raw', project_id: 'gitlab/gitlabhq', id: '1')
   end
 
-  it "to #index" do
-    get("/gitlab/gitlabhq/snippets").should route_to("projects/snippets#index", project_id: 'gitlab/gitlabhq')
+  it 'to #index' do
+    get('/gitlab/gitlabhq/snippets').should route_to('projects/snippets#index', project_id: 'gitlab/gitlabhq')
   end
 
-  it "to #create" do
-    post("/gitlab/gitlabhq/snippets").should route_to("projects/snippets#create", project_id: 'gitlab/gitlabhq')
+  it 'to #create' do
+    post('/gitlab/gitlabhq/snippets').should route_to('projects/snippets#create', project_id: 'gitlab/gitlabhq')
   end
 
-  it "to #new" do
-    get("/gitlab/gitlabhq/snippets/new").should route_to("projects/snippets#new", project_id: 'gitlab/gitlabhq')
+  it 'to #new' do
+    get('/gitlab/gitlabhq/snippets/new').should route_to('projects/snippets#new', project_id: 'gitlab/gitlabhq')
   end
 
-  it "to #edit" do
-    get("/gitlab/gitlabhq/snippets/1/edit").should route_to("projects/snippets#edit", project_id: 'gitlab/gitlabhq', id: '1')
+  it 'to #edit' do
+    get('/gitlab/gitlabhq/snippets/1/edit').should route_to('projects/snippets#edit', project_id: 'gitlab/gitlabhq', id: '1')
   end
 
-  it "to #show" do
-    get("/gitlab/gitlabhq/snippets/1").should route_to("projects/snippets#show", project_id: 'gitlab/gitlabhq', id: '1')
+  it 'to #show' do
+    get('/gitlab/gitlabhq/snippets/1').should route_to('projects/snippets#show', project_id: 'gitlab/gitlabhq', id: '1')
   end
 
-  it "to #update" do
-    put("/gitlab/gitlabhq/snippets/1").should route_to("projects/snippets#update", project_id: 'gitlab/gitlabhq', id: '1')
+  it 'to #update' do
+    put('/gitlab/gitlabhq/snippets/1').should route_to('projects/snippets#update', project_id: 'gitlab/gitlabhq', id: '1')
   end
 
-  it "to #destroy" do
-    delete("/gitlab/gitlabhq/snippets/1").should route_to("projects/snippets#destroy", project_id: 'gitlab/gitlabhq', id: '1')
+  it 'to #destroy' do
+    delete('/gitlab/gitlabhq/snippets/1').should route_to('projects/snippets#destroy', project_id: 'gitlab/gitlabhq', id: '1')
   end
 end
 
@@ -302,24 +302,24 @@ end
 #     project_hooks GET    /:project_id/hooks(.:format)          hooks#index
 #                   POST   /:project_id/hooks(.:format)          hooks#create
 #      project_hook DELETE /:project_id/hooks/:id(.:format)      hooks#destroy
-describe Projects::HooksController, "routing" do
-  it "to #test" do
-    get("/gitlab/gitlabhq/hooks/1/test").should route_to('projects/hooks#test', project_id: 'gitlab/gitlabhq', id: '1')
+describe Projects::HooksController, 'routing' do
+  it 'to #test' do
+    get('/gitlab/gitlabhq/hooks/1/test').should route_to('projects/hooks#test', project_id: 'gitlab/gitlabhq', id: '1')
   end
 
-  it_behaves_like "RESTful project resources" do
+  it_behaves_like 'RESTful project resources' do
     let(:actions)    { [:index, :create, :destroy] }
     let(:controller) { 'hooks' }
   end
 end
 
 # project_commit GET    /:project_id/commit/:id(.:format) commit#show {id: /[[:alnum:]]{6,40}/, project_id: /[^\/]+/}
-describe Projects::CommitController, "routing" do
-  it "to #show" do
-    get("/gitlab/gitlabhq/commit/4246fb").should route_to('projects/commit#show', project_id: 'gitlab/gitlabhq', id: '4246fb')
-    get("/gitlab/gitlabhq/commit/4246fb.diff").should route_to('projects/commit#show', project_id: 'gitlab/gitlabhq', id: '4246fb', format: 'diff')
-    get("/gitlab/gitlabhq/commit/4246fb.patch").should route_to('projects/commit#show', project_id: 'gitlab/gitlabhq', id: '4246fb', format: 'patch')
-    get("/gitlab/gitlabhq/commit/4246fbd13872934f72a8fd0d6fb1317b47b59cb5").should route_to('projects/commit#show', project_id: 'gitlab/gitlabhq', id: '4246fbd13872934f72a8fd0d6fb1317b47b59cb5')
+describe Projects::CommitController, 'routing' do
+  it 'to #show' do
+    get('/gitlab/gitlabhq/commit/4246fb').should route_to('projects/commit#show', project_id: 'gitlab/gitlabhq', id: '4246fb')
+    get('/gitlab/gitlabhq/commit/4246fb.diff').should route_to('projects/commit#show', project_id: 'gitlab/gitlabhq', id: '4246fb', format: 'diff')
+    get('/gitlab/gitlabhq/commit/4246fb.patch').should route_to('projects/commit#show', project_id: 'gitlab/gitlabhq', id: '4246fb', format: 'patch')
+    get('/gitlab/gitlabhq/commit/4246fbd13872934f72a8fd0d6fb1317b47b59cb5').should route_to('projects/commit#show', project_id: 'gitlab/gitlabhq', id: '4246fbd13872934f72a8fd0d6fb1317b47b59cb5')
   end
 end
 
@@ -327,14 +327,14 @@ end
 #         project_commits GET    /:project_id/commits(.:format)           commits#index
 #                         POST   /:project_id/commits(.:format)           commits#create
 #          project_commit GET    /:project_id/commits/:id(.:format)       commits#show
-describe Projects::CommitsController, "routing" do
-  it_behaves_like "RESTful project resources" do
+describe Projects::CommitsController, 'routing' do
+  it_behaves_like 'RESTful project resources' do
     let(:actions)    { [:show] }
     let(:controller) { 'commits' }
   end
 
-  it "to #show" do
-    get("/gitlab/gitlabhq/commits/master.atom").should route_to('projects/commits#show', project_id: 'gitlab/gitlabhq', id: "master", format: "atom")
+  it 'to #show' do
+    get('/gitlab/gitlabhq/commits/master.atom').should route_to('projects/commits#show', project_id: 'gitlab/gitlabhq', id: 'master', format: 'atom')
   end
 end
 
@@ -345,8 +345,8 @@ end
 #      project_team_member GET    /:project_id/team_members/:id(.:format)      team_members#show
 #                          PUT    /:project_id/team_members/:id(.:format)      team_members#update
 #                          DELETE /:project_id/team_members/:id(.:format)      team_members#destroy
-describe Projects::TeamMembersController, "routing" do
-  it_behaves_like "RESTful project resources" do
+describe Projects::TeamMembersController, 'routing' do
+  it_behaves_like 'RESTful project resources' do
     let(:actions)    { [:new, :create, :update, :destroy] }
     let(:controller) { 'team_members' }
   end
@@ -359,17 +359,17 @@ end
 #      project_milestone GET    /:project_id/milestones/:id(.:format)      milestones#show
 #                        PUT    /:project_id/milestones/:id(.:format)      milestones#update
 #                        DELETE /:project_id/milestones/:id(.:format)      milestones#destroy
-describe Projects::MilestonesController, "routing" do
-  it_behaves_like "RESTful project resources" do
+describe Projects::MilestonesController, 'routing' do
+  it_behaves_like 'RESTful project resources' do
     let(:controller) { 'milestones' }
     let(:actions) { [:index, :create, :new, :edit, :show, :update] }
   end
 end
 
 # project_labels GET    /:project_id/labels(.:format) labels#index
-describe Projects::LabelsController, "routing" do
-  it "to #index" do
-    get("/gitlab/gitlabhq/labels").should route_to('projects/labels#index', project_id: 'gitlab/gitlabhq')
+describe Projects::LabelsController, 'routing' do
+  it 'to #index' do
+    get('/gitlab/gitlabhq/labels').should route_to('projects/labels#index', project_id: 'gitlab/gitlabhq')
   end
 end
 
@@ -383,12 +383,12 @@ end
 #              project_issue GET    /:project_id/issues/:id(.:format)         issues#show
 #                            PUT    /:project_id/issues/:id(.:format)         issues#update
 #                            DELETE /:project_id/issues/:id(.:format)         issues#destroy
-describe Projects::IssuesController, "routing" do
-  it "to #bulk_update" do
-    post("/gitlab/gitlabhq/issues/bulk_update").should route_to('projects/issues#bulk_update', project_id: 'gitlab/gitlabhq')
+describe Projects::IssuesController, 'routing' do
+  it 'to #bulk_update' do
+    post('/gitlab/gitlabhq/issues/bulk_update').should route_to('projects/issues#bulk_update', project_id: 'gitlab/gitlabhq')
   end
 
-  it_behaves_like "RESTful project resources" do
+  it_behaves_like 'RESTful project resources' do
     let(:controller) { 'issues' }
     let(:actions) { [:index, :create, :new, :edit, :show, :update] }
   end
@@ -397,36 +397,36 @@ end
 #         project_notes GET    /:project_id/notes(.:format)         notes#index
 #                       POST   /:project_id/notes(.:format)         notes#create
 #          project_note DELETE /:project_id/notes/:id(.:format)     notes#destroy
-describe Projects::NotesController, "routing" do
-  it_behaves_like "RESTful project resources" do
+describe Projects::NotesController, 'routing' do
+  it_behaves_like 'RESTful project resources' do
     let(:actions)    { [:index, :create, :destroy] }
     let(:controller) { 'notes' }
   end
 end
 
 # project_blame GET    /:project_id/blame/:id(.:format) blame#show {id: /.+/, project_id: /[^\/]+/}
-describe Projects::BlameController, "routing" do
-  it "to #show" do
-    get("/gitlab/gitlabhq/blame/master/app/models/project.rb").should route_to('projects/blame#show', project_id: 'gitlab/gitlabhq', id: 'master/app/models/project.rb')
-    get("/gitlab/gitlabhq/blame/master/files.scss").should route_to('projects/blame#show', project_id: 'gitlab/gitlabhq', id: 'master/files.scss')
+describe Projects::BlameController, 'routing' do
+  it 'to #show' do
+    get('/gitlab/gitlabhq/blame/master/app/models/project.rb').should route_to('projects/blame#show', project_id: 'gitlab/gitlabhq', id: 'master/app/models/project.rb')
+    get('/gitlab/gitlabhq/blame/master/files.scss').should route_to('projects/blame#show', project_id: 'gitlab/gitlabhq', id: 'master/files.scss')
   end
 end
 
 # project_blob GET    /:project_id/blob/:id(.:format) blob#show {id: /.+/, project_id: /[^\/]+/}
-describe Projects::BlobController, "routing" do
-  it "to #show" do
-    get("/gitlab/gitlabhq/blob/master/app/models/project.rb").should route_to('projects/blob#show', project_id: 'gitlab/gitlabhq', id: 'master/app/models/project.rb')
-    get("/gitlab/gitlabhq/blob/master/app/models/compare.rb").should route_to('projects/blob#show', project_id: 'gitlab/gitlabhq', id: 'master/app/models/compare.rb')
-    get("/gitlab/gitlabhq/blob/master/app/models/diff.js").should route_to('projects/blob#show', project_id: 'gitlab/gitlabhq', id: 'master/app/models/diff.js')
-    get("/gitlab/gitlabhq/blob/master/files.scss").should route_to('projects/blob#show', project_id: 'gitlab/gitlabhq', id: 'master/files.scss')
+describe Projects::BlobController, 'routing' do
+  it 'to #show' do
+    get('/gitlab/gitlabhq/blob/master/app/models/project.rb').should route_to('projects/blob#show', project_id: 'gitlab/gitlabhq', id: 'master/app/models/project.rb')
+    get('/gitlab/gitlabhq/blob/master/app/models/compare.rb').should route_to('projects/blob#show', project_id: 'gitlab/gitlabhq', id: 'master/app/models/compare.rb')
+    get('/gitlab/gitlabhq/blob/master/app/models/diff.js').should route_to('projects/blob#show', project_id: 'gitlab/gitlabhq', id: 'master/app/models/diff.js')
+    get('/gitlab/gitlabhq/blob/master/files.scss').should route_to('projects/blob#show', project_id: 'gitlab/gitlabhq', id: 'master/files.scss')
   end
 end
 
 # project_tree GET    /:project_id/tree/:id(.:format) tree#show {id: /.+/, project_id: /[^\/]+/}
-describe Projects::TreeController, "routing" do
-  it "to #show" do
-    get("/gitlab/gitlabhq/tree/master/app/models/project.rb").should route_to('projects/tree#show', project_id: 'gitlab/gitlabhq', id: 'master/app/models/project.rb')
-    get("/gitlab/gitlabhq/tree/master/files.scss").should route_to('projects/tree#show', project_id: 'gitlab/gitlabhq', id: 'master/files.scss')
+describe Projects::TreeController, 'routing' do
+  it 'to #show' do
+    get('/gitlab/gitlabhq/tree/master/app/models/project.rb').should route_to('projects/tree#show', project_id: 'gitlab/gitlabhq', id: 'master/app/models/project.rb')
+    get('/gitlab/gitlabhq/tree/master/files.scss').should route_to('projects/tree#show', project_id: 'gitlab/gitlabhq', id: 'master/files.scss')
   end
 end
 
@@ -453,42 +453,43 @@ end
 # project_compare_index GET    /:project_id/compare(.:format)             compare#index {id: /[^\/]+/, project_id: /[^\/]+/}
 #                       POST   /:project_id/compare(.:format)             compare#create {id: /[^\/]+/, project_id: /[^\/]+/}
 #       project_compare        /:project_id/compare/:from...:to(.:format) compare#show {from: /.+/, to: /.+/, id: /[^\/]+/, project_id: /[^\/]+/}
-describe Projects::CompareController, "routing" do
-  it "to #index" do
-    get("/gitlab/gitlabhq/compare").should route_to('projects/compare#index', project_id: 'gitlab/gitlabhq')
+describe Projects::CompareController, 'routing' do
+  it 'to #index' do
+    get('/gitlab/gitlabhq/compare').should route_to('projects/compare#index', project_id: 'gitlab/gitlabhq')
   end
 
-  it "to #compare" do
-    post("/gitlab/gitlabhq/compare").should route_to('projects/compare#create', project_id: 'gitlab/gitlabhq')
+  it 'to #compare' do
+    post('/gitlab/gitlabhq/compare').should route_to('projects/compare#create', project_id: 'gitlab/gitlabhq')
   end
 
-  it "to #show" do
-    get("/gitlab/gitlabhq/compare/master...stable").should     route_to('projects/compare#show', project_id: 'gitlab/gitlabhq', from: 'master', to: 'stable')
-    get("/gitlab/gitlabhq/compare/issue/1234...stable").should route_to('projects/compare#show', project_id: 'gitlab/gitlabhq', from: 'issue/1234', to: 'stable')
+  it 'to #show' do
+    get('/gitlab/gitlabhq/compare/master...stable').should     route_to('projects/compare#show', project_id: 'gitlab/gitlabhq', from: 'master', to: 'stable')
+    get('/gitlab/gitlabhq/compare/issue/1234...stable').should route_to('projects/compare#show', project_id: 'gitlab/gitlabhq', from: 'issue/1234', to: 'stable')
   end
 end
 
-describe Projects::NetworkController, "routing" do
-  it "to #show" do
-    get("/gitlab/gitlabhq/network/master").should route_to('projects/network#show', project_id: 'gitlab/gitlabhq', id: 'master')
-    get("/gitlab/gitlabhq/network/master.json").should route_to('projects/network#show', project_id: 'gitlab/gitlabhq', id: 'master', format: "json")
+describe Projects::NetworkController, 'routing' do
+  it 'to #show' do
+    get('/gitlab/gitlabhq/network/master').should route_to('projects/network#show', project_id: 'gitlab/gitlabhq', id: 'master')
+    get('/gitlab/gitlabhq/network/master.json').should route_to('projects/network#show', project_id: 'gitlab/gitlabhq', id: 'master', format: 'json')
   end
 end
 
-describe Projects::GraphsController, "routing" do
-  it "to #show" do
-    get("/gitlab/gitlabhq/graphs/master").should route_to('projects/graphs#show', project_id: 'gitlab/gitlabhq', id: 'master')
+describe Projects::GraphsController, 'routing' do
+  it 'to #show' do
+    get('/gitlab/gitlabhq/graphs/master').should route_to('projects/graphs#show', project_id: 'gitlab/gitlabhq', id: 'master')
   end
 end
 
-describe Projects::ForksController, "routing" do
-  it "to #new" do
-    get("/gitlab/gitlabhq/fork/new").should route_to("projects/forks#new", project_id: 'gitlab/gitlabhq')
+describe Projects::ForksController, 'routing' do
+  it 'to #new' do
+    get('/gitlab/gitlabhq/fork/new').should route_to('projects/forks#new', project_id: 'gitlab/gitlabhq')
   end
 
-  it "to #create" do
-    post("/gitlab/gitlabhq/fork").should route_to("projects/forks#create", project_id: 'gitlab/gitlabhq')
+  it 'to #create' do
+    post('/gitlab/gitlabhq/fork').should route_to('projects/forks#create', project_id: 'gitlab/gitlabhq')
   end
+end
 
 # project_avatar DELETE /project/avatar(.:format) projects/avatars#destroy
 describe Projects::AvatarsController, 'routing' do