diff --git a/spec/controllers/blob_controller_spec.rb b/spec/controllers/blob_controller_spec.rb
index 02a9db612558cbec9c531e3240fad3ee65774347..ea52e4d212a5461bcdc1dba6ec1ed859a7e8e439 100644
--- a/spec/controllers/blob_controller_spec.rb
+++ b/spec/controllers/blob_controller_spec.rb
@@ -45,7 +45,7 @@ describe Projects::BlobController do
 
     context 'redirect to tree' do
       let(:id) { 'markdown/doc' }
-      it "redirects" do
+      it 'redirects' do
         expect(subject).
           to redirect_to("/#{project.path_with_namespace}/tree/markdown/doc")
       end
diff --git a/spec/controllers/commit_controller_spec.rb b/spec/controllers/commit_controller_spec.rb
index 8f0d0261e6dd1767a1018e8a258da533f5a37d2c..f0e39e674fdc02a3067e61dfe5273bda56831f5f 100644
--- a/spec/controllers/commit_controller_spec.rb
+++ b/spec/controllers/commit_controller_spec.rb
@@ -31,8 +31,8 @@ describe Projects::CommitController do
       end
 
       it "should not escape Html" do
-        allow_any_instance_of(Commit).to receive(:"to_#{format}")
-          .and_return('HTML entities &<>" ')
+        allow_any_instance_of(Commit).to receive(:"to_#{format}").
+          and_return('HTML entities &<>" ')
 
         get :show, project_id: project.to_param, id: commit.id, format: format
 
diff --git a/spec/controllers/import/github_controller_spec.rb b/spec/controllers/import/github_controller_spec.rb
index 69469e5d8f3cd357429369328d670c57d7e1b336..3b779855d3f7d769db59ff87f4efc08d3da5a5dc 100644
--- a/spec/controllers/import/github_controller_spec.rb
+++ b/spec/controllers/import/github_controller_spec.rb
@@ -12,9 +12,9 @@ describe Import::GithubController do
       token = "asdasd12345"
       allow_any_instance_of(Gitlab::GithubImport::Client).
         to receive(:get_token).and_return(token)
-      Gitlab.config.omniauth.providers << OpenStruct.new(app_id: "asd123",
-                                                         app_secret: "asd123",
-                                                         name: "github")
+      Gitlab.config.omniauth.providers << OpenStruct.new(app_id: 'asd123',
+                                                         app_secret: 'asd123',
+                                                         name: 'github')
 
       get :callback
 
diff --git a/spec/controllers/tree_controller_spec.rb b/spec/controllers/tree_controller_spec.rb
index c228584c886d6f70918944897f81c5358dd7d499..805e0a8795bbe03ae04cf17d8b5b8b52c39a357c 100644
--- a/spec/controllers/tree_controller_spec.rb
+++ b/spec/controllers/tree_controller_spec.rb
@@ -50,7 +50,11 @@ describe Projects::TreeController do
 
     context 'redirect to blob' do
       let(:id) { 'master/README.md' }
-      it { is_expected.to redirect_to("/#{project.path_with_namespace}/blob/master/README.md") }
+      it 'redirects' do
+        redirect_url = "/#{project.path_with_namespace}/blob/master/README.md"
+        expect(subject).
+          to redirect_to(redirect_url)
+      end
     end
   end
 end
diff --git a/spec/features/admin/admin_users_spec.rb b/spec/features/admin/admin_users_spec.rb
index c6c9f1f33c1174549e1335dcec097fdeaf5fa495..f97b69713ceca6862bacafa3729342fa99a6fc78 100644
--- a/spec/features/admin/admin_users_spec.rb
+++ b/spec/features/admin/admin_users_spec.rb
@@ -33,15 +33,17 @@ describe "Admin::Users", feature: true  do
     it "should apply defaults to user" do
       click_button "Create user"
       user = User.find_by(username: 'bang')
-      expect(user.projects_limit).to eq(Gitlab.config.gitlab.default_projects_limit)
-      expect(user.can_create_group).to eq(Gitlab.config.gitlab.default_can_create_group)
+      expect(user.projects_limit).
+        to eq(Gitlab.config.gitlab.default_projects_limit)
+      expect(user.can_create_group).
+        to eq(Gitlab.config.gitlab.default_can_create_group)
     end
 
     it "should create user with valid data" do
       click_button "Create user"
       user = User.find_by(username: 'bang')
-      expect(user.name).to eq("Big Bang")
-      expect(user.email).to eq("bigbang@mail.com")
+      expect(user.name).to eq('Big Bang')
+      expect(user.email).to eq('bigbang@mail.com')
     end
 
     it "should call send mail" do
@@ -54,7 +56,7 @@ describe "Admin::Users", feature: true  do
       click_button "Create user"
       user = User.find_by(username: 'bang')
       email = ActionMailer::Base.deliveries.last
-      expect(email.subject).to have_content("Account was created")
+      expect(email.subject).to have_content('Account was created')
       expect(email.text_part.body).to have_content(user.email)
       expect(email.text_part.body).to have_content('password')
     end
@@ -80,8 +82,8 @@ describe "Admin::Users", feature: true  do
     end
 
     it "should have user edit page" do
-      expect(page).to have_content("Name")
-      expect(page).to have_content("Password")
+      expect(page).to have_content('Name')
+      expect(page).to have_content('Password')
     end
 
     describe "Update user" do
@@ -93,13 +95,13 @@ describe "Admin::Users", feature: true  do
       end
 
       it "should show page with  new data" do
-        expect(page).to have_content("bigbang@mail.com")
-        expect(page).to have_content("Big Bang")
+        expect(page).to have_content('bigbang@mail.com')
+        expect(page).to have_content('Big Bang')
       end
 
       it "should change user entry" do
         @simple_user.reload
-        expect(@simple_user.name).to eq("Big Bang")
+        expect(@simple_user.name).to eq('Big Bang')
         expect(@simple_user.is_admin?).to be_truthy
       end
     end
diff --git a/spec/features/atom/dashboard_issues_spec.rb b/spec/features/atom/dashboard_issues_spec.rb
index ceeb3e6c5aa1465c5044f4e994d323463afd1427..b710cb3c72ff33b85d85de20b73bb0d9e954e48f 100644
--- a/spec/features/atom/dashboard_issues_spec.rb
+++ b/spec/features/atom/dashboard_issues_spec.rb
@@ -17,12 +17,13 @@ describe "Dashboard Issues Feed", feature: true  do
       it "should render atom feed via private token" do
         visit issues_dashboard_path(:atom, private_token: user.private_token)
 
-        expect(response_headers['Content-Type']).to have_content("application/atom+xml")
-        expect(body).to have_selector("title", text: "#{user.name} issues")
-        expect(body).to have_selector("author email", text: issue1.author_email)
-        expect(body).to have_selector("entry summary", text: issue1.title)
-        expect(body).to have_selector("author email", text: issue2.author_email)
-        expect(body).to have_selector("entry summary", text: issue2.title)
+        expect(response_headers['Content-Type']).
+          to have_content('application/atom+xml')
+        expect(body).to have_selector('title', text: "#{user.name} issues")
+        expect(body).to have_selector('author email', text: issue1.author_email)
+        expect(body).to have_selector('entry summary', text: issue1.title)
+        expect(body).to have_selector('author email', text: issue2.author_email)
+        expect(body).to have_selector('entry summary', text: issue2.title)
       end
     end
   end
diff --git a/spec/features/atom/dashboard_spec.rb b/spec/features/atom/dashboard_spec.rb
index 8e723b5c2acbfcbba4d66612e7c81abbcb8e8762..ad157d742ff42f4d1fca3453f83daec6eb0cbbbb 100644
--- a/spec/features/atom/dashboard_spec.rb
+++ b/spec/features/atom/dashboard_spec.rb
@@ -7,7 +7,7 @@ describe "Dashboard Feed", feature: true  do
     context "projects atom feed via private token" do
       it "should render projects atom feed" do
         visit dashboard_path(:atom, private_token: user.private_token)
-        expect(body).to have_selector("feed title")
+        expect(body).to have_selector('feed title')
       end
     end
 
@@ -28,7 +28,8 @@ describe "Dashboard Feed", feature: true  do
       end
 
       it "should have issue comment event" do
-        expect(body).to have_content("#{user.name} commented on issue ##{issue.iid}")
+        expect(body).
+          to have_content("#{user.name} commented on issue ##{issue.iid}")
       end
     end
   end
diff --git a/spec/features/atom/issues_spec.rb b/spec/features/atom/issues_spec.rb
index 26422c8fdc02d742f8110a1119bfd695b76ba70b..43163e4113e52e337ba2d95adc18856b86a35f4f 100644
--- a/spec/features/atom/issues_spec.rb
+++ b/spec/features/atom/issues_spec.rb
@@ -1,33 +1,36 @@
 require 'spec_helper'
 
-describe "Issues Feed", feature: true  do
-  describe "GET /issues" do
+describe 'Issues Feed', feature: true  do
+  describe 'GET /issues' do
     let!(:user)     { create(:user) }
     let!(:project)  { create(:project) }
     let!(:issue)    { create(:issue, author: user, project: project) }
 
     before { project.team << [user, :developer] }
 
-    context "when authenticated" do
-      it "should render atom feed" do
+    context 'when authenticated' do
+      it 'should render atom feed' do
         login_with user
         visit project_issues_path(project, :atom)
 
-        expect(response_headers['Content-Type']).to have_content("application/atom+xml")
-        expect(body).to have_selector("title", text: "#{project.name} issues")
-        expect(body).to have_selector("author email", text: issue.author_email)
-        expect(body).to have_selector("entry summary", text: issue.title)
+        expect(response_headers['Content-Type']).
+          to have_content('application/atom+xml')
+        expect(body).to have_selector('title', text: "#{project.name} issues")
+        expect(body).to have_selector('author email', text: issue.author_email)
+        expect(body).to have_selector('entry summary', text: issue.title)
       end
     end
 
-    context "when authenticated via private token" do
-      it "should render atom feed" do
-        visit project_issues_path(project, :atom, private_token: user.private_token)
+    context 'when authenticated via private token' do
+      it 'should render atom feed' do
+        visit project_issues_path(project, :atom,
+                                  private_token: user.private_token)
 
-        expect(response_headers['Content-Type']).to have_content("application/atom+xml")
-        expect(body).to have_selector("title", text: "#{project.name} issues")
-        expect(body).to have_selector("author email", text: issue.author_email)
-        expect(body).to have_selector("entry summary", text: issue.title)
+        expect(response_headers['Content-Type']).
+          to have_content('application/atom+xml')
+        expect(body).to have_selector('title', text: "#{project.name} issues")
+        expect(body).to have_selector('author email', text: issue.author_email)
+        expect(body).to have_selector('entry summary', text: issue.title)
       end
     end
   end
diff --git a/spec/features/atom/users_spec.rb b/spec/features/atom/users_spec.rb
index 37af48282db770c8090187fa12c87a11cbcbe343..c0316b073ad0116faba15ffabee1a9106cf38d39 100644
--- a/spec/features/atom/users_spec.rb
+++ b/spec/features/atom/users_spec.rb
@@ -4,17 +4,23 @@ describe "User Feed", feature: true  do
   describe "GET /" do
     let!(:user) { create(:user) }
 
-    context "user atom feed via private token" do
+    context 'user atom feed via private token' do
       it "should render user atom feed" do
         visit user_path(user, :atom, private_token: user.private_token)
-        expect(body).to have_selector("feed title")
+        expect(body).to have_selector('feed title')
       end
     end
 
     context 'feed content' do
       let(:project) { create(:project) }
-      let(:issue) { create(:issue, project: project, author: user, description: '') }
-      let(:note) { create(:note, noteable: issue, author: user, note: 'Bug confirmed', project: project) }
+      let(:issue) do
+        create(:issue, project: project,
+               author: user, description: '')
+      end
+      let(:note) do
+        create(:note, noteable: issue, author: user,
+               note: 'Bug confirmed', project: project)
+      end
 
       before do
         project.team << [user, :master]
@@ -23,11 +29,11 @@ describe "User Feed", feature: true  do
         visit user_path(user, :atom, private_token: user.private_token)
       end
 
-      it "should have issue opened event" do
+      it 'should have issue opened event' do
         expect(body).to have_content("#{safe_name} opened issue ##{issue.iid}")
       end
 
-      it "should have issue comment event" do
+      it 'should have issue comment event' do
         expect(body).
           to have_content("#{safe_name} commented on issue ##{issue.iid}")
       end
diff --git a/spec/features/issues_spec.rb b/spec/features/issues_spec.rb
index 78e5adebc5c5570896c34e209fe6e961a0cd3e08..f54155439cb4d3cabc00da6d92af6aa26ccdea0c 100644
--- a/spec/features/issues_spec.rb
+++ b/spec/features/issues_spec.rb
@@ -1,6 +1,6 @@
 require 'spec_helper'
 
-describe "Issues", feature: true do
+describe 'Issues', feature: true do
   include SortingHelper
 
   let(:project) { create(:project) }
@@ -12,7 +12,7 @@ describe "Issues", feature: true do
     project.team << [[@user, user2], :developer]
   end
 
-  describe "Edit issue" do
+  describe 'Edit issue' do
     let!(:issue) do
       create(:issue,
              author: @user,
@@ -25,30 +25,34 @@ describe "Issues", feature: true do
       click_link "Edit"
     end
 
-    it "should open new issue popup" do
+    it 'should open new issue popup' do
       expect(page).to have_content("Issue ##{issue.iid}")
     end
 
-    describe "fill in" do
+    describe 'fill in' do
       before do
-        fill_in "issue_title", with: "bug 345"
-        fill_in "issue_description", with: "bug description"
+        fill_in 'issue_title', with: 'bug 345'
+        fill_in 'issue_description', with: 'bug description'
       end
 
-      it { expect { click_button "Save changes" }.to_not change {Issue.count} }
+      it 'does not change issue count' do
+        expect {
+          click_button 'Save changes'
+        }.to_not change { Issue.count }
+      end
 
-      it "should update issue fields" do
-        click_button "Save changes"
+      it 'should update issue fields' do
+        click_button 'Save changes'
 
         expect(page).to have_content @user.name
-        expect(page).to have_content "bug 345"
+        expect(page).to have_content 'bug 345'
         expect(page).to have_content project.name
       end
     end
 
   end
 
-  describe "Editing issue assignee" do
+  describe 'Editing issue assignee' do
     let!(:issue) do
       create(:issue,
              author: @user,
@@ -56,7 +60,7 @@ describe "Issues", feature: true do
              project: project)
     end
 
-    it 'allows user to select unasigned', :js => true do
+    it 'allows user to select unasigned', js: true do
       visit edit_project_issue_path(project, issue)
 
       expect(page).to have_content "Assign to #{@user.name}"
@@ -65,14 +69,14 @@ describe "Issues", feature: true do
       sleep 2 # wait for ajax stuff to complete
       first('.user-result').click
 
-      click_button "Save changes"
+      click_button 'Save changes'
 
       expect(page).to have_content 'Assignee: none'
       expect(issue.reload.assignee).to be_nil
     end
   end
 
-  describe "Filter issue" do
+  describe 'Filter issue' do
     before do
       ['foobar', 'barbaz', 'gitlab'].each do |title|
         create(:issue,
@@ -90,7 +94,7 @@ describe "Issues", feature: true do
 
     let(:issue) { @issue }
 
-    it "should allow filtering by issues with no specified milestone" do
+    it 'should allow filtering by issues with no specified milestone' do
       visit project_issues_path(project, milestone_id: '0')
 
       expect(page).not_to have_content 'foobar'
@@ -98,7 +102,7 @@ describe "Issues", feature: true do
       expect(page).to have_content 'gitlab'
     end
 
-    it "should allow filtering by a specified milestone" do
+    it 'should allow filtering by a specified milestone' do
       visit project_issues_path(project, milestone_id: issue.milestone.id)
 
       expect(page).to have_content 'foobar'
@@ -106,7 +110,7 @@ describe "Issues", feature: true do
       expect(page).not_to have_content 'gitlab'
     end
 
-    it "should allow filtering by issues with no specified assignee" do
+    it 'should allow filtering by issues with no specified assignee' do
       visit project_issues_path(project, assignee_id: '0')
 
       expect(page).to have_content 'foobar'
@@ -114,7 +118,7 @@ describe "Issues", feature: true do
       expect(page).not_to have_content 'gitlab'
     end
 
-    it "should allow filtering by a specified assignee" do
+    it 'should allow filtering by a specified assignee' do
       visit project_issues_path(project, assignee_id: @user.id)
 
       expect(page).not_to have_content 'foobar'
@@ -126,7 +130,11 @@ describe "Issues", feature: true do
   describe 'filter issue' do
     titles = ['foo','bar','baz']
     titles.each_with_index do |title, index|
-      let!(title.to_sym) { create(:issue, title: title, project: project, created_at: Time.now - (index * 60)) }
+      let!(title.to_sym) do
+        create(:issue, title: title,
+                       project: project,
+                       created_at: Time.now - (index * 60))
+      end
     end
     let(:newer_due_milestone) { create(:milestone, due_date: '2013-12-11') }
     let(:later_due_milestone) { create(:milestone, due_date: '2013-12-12') }
@@ -134,15 +142,15 @@ describe "Issues", feature: true do
     it 'sorts by newest' do
       visit project_issues_path(project, sort: sort_value_recently_created)
 
-      expect(first_issue).to include("foo")
-      expect(last_issue).to include("baz")
+      expect(first_issue).to include('foo')
+      expect(last_issue).to include('baz')
     end
 
     it 'sorts by oldest' do
       visit project_issues_path(project, sort: sort_value_oldest_created)
 
-      expect(first_issue).to include("baz")
-      expect(last_issue).to include("foo")
+      expect(first_issue).to include('baz')
+      expect(last_issue).to include('foo')
     end
 
     it 'sorts by most recently updated' do
@@ -150,7 +158,7 @@ describe "Issues", feature: true do
       baz.save
       visit project_issues_path(project, sort: sort_value_recently_updated)
 
-      expect(first_issue).to include("baz")
+      expect(first_issue).to include('baz')
     end
 
     it 'sorts by least recently updated' do
@@ -158,7 +166,7 @@ describe "Issues", feature: true do
       baz.save
       visit project_issues_path(project, sort: sort_value_oldest_updated)
 
-      expect(first_issue).to include("baz")
+      expect(first_issue).to include('baz')
     end
 
     describe 'sorting by milestone' do
@@ -172,13 +180,13 @@ describe "Issues", feature: true do
       it 'sorts by recently due milestone' do
         visit project_issues_path(project, sort: sort_value_milestone_soon)
 
-        expect(first_issue).to include("foo")
+        expect(first_issue).to include('foo')
       end
 
       it 'sorts by least recently due milestone' do
         visit project_issues_path(project, sort: sort_value_milestone_later)
 
-        expect(first_issue).to include("bar")
+        expect(first_issue).to include('bar')
       end
     end
 
@@ -193,10 +201,12 @@ describe "Issues", feature: true do
       end
 
       it 'sorts with a filter applied' do
-        visit project_issues_path(project, sort: sort_value_oldest_created, assignee_id: user2.id)
+        visit project_issues_path(project,
+                                  sort: sort_value_oldest_created,
+                                  assignee_id: user2.id)
 
-        expect(first_issue).to include("bar")
-        expect(last_issue).to include("foo")
+        expect(first_issue).to include('bar')
+        expect(last_issue).to include('foo')
         expect(page).not_to have_content 'baz'
       end
     end
@@ -210,11 +220,13 @@ describe "Issues", feature: true do
       it 'with dropdown menu' do
         visit project_issue_path(project, issue)
 
-        find('.edit-issue.inline-update #issue_assignee_id').set project.team.members.first.id
+        find('.edit-issue.inline-update #issue_assignee_id').
+          set project.team.members.first.id
         click_button 'Update Issue'
 
-        expect(page).to have_content "Assignee:"
-        has_select?('issue_assignee_id', :selected => project.team.members.first.name)
+        expect(page).to have_content 'Assignee:'
+        has_select?('issue_assignee_id',
+                    selected: project.team.members.first.name)
       end
     end
 
@@ -228,7 +240,7 @@ describe "Issues", feature: true do
         issue.save
       end
 
-      it "shows assignee text", js: true do
+      it 'shows assignee text', js: true do
         logout
         login_with guest
 
@@ -247,12 +259,13 @@ describe "Issues", feature: true do
       it 'with dropdown menu' do
         visit project_issue_path(project, issue)
 
-        find('.edit-issue.inline-update').select(milestone.title, from: 'issue_milestone_id')
+        find('.edit-issue.inline-update').
+          select(milestone.title, from: 'issue_milestone_id')
         click_button 'Update Issue'
 
         expect(page).to have_content "Milestone changed to #{milestone.title}"
         expect(page).to have_content "Milestone: #{milestone.title}"
-        has_select?('issue_assignee_id', :selected => milestone.title)
+        has_select?('issue_assignee_id', selected: milestone.title)
       end
     end
 
@@ -265,7 +278,7 @@ describe "Issues", feature: true do
         issue.save
       end
 
-      it "shows milestone text", js: true do
+      it 'shows milestone text', js: true do
         logout
         login_with guest
 
@@ -282,7 +295,7 @@ describe "Issues", feature: true do
         issue.save
       end
 
-      it 'allows user to remove assignee', :js => true do
+      it 'allows user to remove assignee', js: true do
         visit project_issue_path(project, issue)
         expect(page).to have_content "Assignee: #{user2.name}"
 
@@ -298,10 +311,10 @@ describe "Issues", feature: true do
   end
 
   def first_issue
-    all("ul.issues-list li").first.text
+    all('ul.issues-list li').first.text
   end
 
   def last_issue
-    all("ul.issues-list li").last.text
+    all('ul.issues-list li').last.text
   end
 end
diff --git a/spec/features/notes_on_merge_requests_spec.rb b/spec/features/notes_on_merge_requests_spec.rb
index 2884c560a7ce0fe28c70637d68c8eae4d995ec37..7790d0ecd7361f7ebca4794bd7eb37518c3be90b 100644
--- a/spec/features/notes_on_merge_requests_spec.rb
+++ b/spec/features/notes_on_merge_requests_spec.rb
@@ -3,10 +3,12 @@ require 'spec_helper'
 describe 'Comments' do
   include RepoHelpers
 
-  describe "On a merge request", js: true, feature: true do
+  describe 'On a merge request', js: true, feature: true do
     let!(:merge_request) { create(:merge_request) }
     let!(:project) { merge_request.source_project }
-    let!(:note) { create(:note_on_merge_request, :with_attachment, project: project) }
+    let!(:note) do
+      create(:note_on_merge_request, :with_attachment, project: project)
+    end
 
     before do
       login_as :admin
@@ -15,19 +17,20 @@ describe 'Comments' do
 
     subject { page }
 
-    describe "the note form" do
+    describe 'the note form' do
       it 'should be valid' do
-        is_expected.to have_css(".js-main-target-form", visible: true, count: 1)
-        expect(find(".js-main-target-form input[type=submit]").value).to eq("Add Comment")
+        is_expected.to have_css('.js-main-target-form', visible: true, count: 1)
+        expect(find('.js-main-target-form input[type=submit]').value).
+          to eq('Add Comment')
         within('.js-main-target-form') do
           expect(page).not_to have_link('Cancel')
         end
       end
 
-      describe "with text" do
+      describe 'with text' do
         before do
-          within(".js-main-target-form") do
-            fill_in "note[note]", with: "This is awesome"
+          within('.js-main-target-form') do
+            fill_in 'note[note]', with: 'This is awesome'
           end
         end
 
@@ -40,41 +43,45 @@ describe 'Comments' do
       end
     end
 
-    describe "when posting a note" do
+    describe 'when posting a note' do
       before do
-        within(".js-main-target-form") do
-          fill_in "note[note]", with: "This is awsome!"
+        within('.js-main-target-form') do
+          fill_in 'note[note]', with: 'This is awsome!'
           find('.js-md-preview-button').click
-          click_button "Add Comment"
+          click_button 'Add Comment'
         end
       end
 
       it 'should be added and form reset' do
-        is_expected.to have_content("This is awsome!")
+        is_expected.to have_content('This is awsome!')
         within('.js-main-target-form') do
           expect(page).to have_no_field('note[note]', with: 'This is awesome!')
           expect(page).to have_css('.js-md-preview', visible: :hidden)
         end
-        within(".js-main-target-form") { is_expected.to have_css(".js-note-text", visible: true) }
+        within('.js-main-target-form') do
+          is_expected.to have_css('.js-note-text', visible: true)
+        end
       end
     end
 
-    describe "when editing a note", js: true do
-      it "should contain the hidden edit form" do
-        within("#note_#{note.id}") { is_expected.to have_css(".note-edit-form", visible: false) }
+    describe 'when editing a note', js: true do
+      it 'should contain the hidden edit form' do
+        within("#note_#{note.id}") do
+          is_expected.to have_css('.note-edit-form', visible: false)
+        end
       end
 
-      describe "editing the note" do
+      describe 'editing the note' do
         before do
           find('.note').hover
           find(".js-note-edit").click
         end
 
-        it "should show the note edit form and hide the note body" do
+        it 'should show the note edit form and hide the note body' do
           within("#note_#{note.id}") do
-            expect(find(".current-note-edit-form", visible: true)).to be_visible
-            expect(find(".note-edit-form", visible: true)).to be_visible
-            expect(find(:css, ".note-text", visible: false)).not_to be_visible
+            expect(find('.current-note-edit-form', visible: true)).to be_visible
+            expect(find('.note-edit-form', visible: true)).to be_visible
+            expect(find(:css, '.note-text', visible: false)).not_to be_visible
           end
         end
 
@@ -87,41 +94,43 @@ describe 'Comments' do
           #end
         #end
 
-        it "appends the edited at time to the note" do
-          within(".current-note-edit-form") do
-            fill_in "note[note]", with: "Some new content"
-            find(".btn-save").click
+        it 'appends the edited at time to the note' do
+          within('.current-note-edit-form') do
+            fill_in 'note[note]', with: 'Some new content'
+            find('.btn-save').click
           end
 
           within("#note_#{note.id}") do
-            is_expected.to have_css(".note_edited_ago")
-            expect(find(".note_edited_ago").text).to match(/less than a minute ago/)
+            is_expected.to have_css('.note_edited_ago')
+            expect(find('.note_edited_ago').text).
+              to match(/less than a minute ago/)
           end
         end
       end
 
-      describe "deleting an attachment" do
+      describe 'deleting an attachment' do
         before do
           find('.note').hover
-          find(".js-note-edit").click
+          find('.js-note-edit').click
         end
 
-        it "shows the delete link" do
-          within(".note-attachment") do
-            is_expected.to have_css(".js-note-attachment-delete")
+        it 'shows the delete link' do
+          within('.note-attachment') do
+            is_expected.to have_css('.js-note-attachment-delete')
           end
         end
 
-        it "removes the attachment div and resets the edit form" do
-          find(".js-note-attachment-delete").click
-          is_expected.not_to have_css(".note-attachment")
-          expect(find(".current-note-edit-form", visible: false)).not_to be_visible
+        it 'removes the attachment div and resets the edit form' do
+          find('.js-note-attachment-delete').click
+          is_expected.not_to have_css('.note-attachment')
+          expect(find('.current-note-edit-form', visible: false)).
+            not_to be_visible
         end
       end
     end
   end
 
-  describe "On a merge request diff", js: true, feature: true do
+  describe 'On a merge request diff', js: true, feature: true do
     let(:merge_request) { create(:merge_request) }
     let(:project) { merge_request.source_project }
 
@@ -132,68 +141,74 @@ describe 'Comments' do
 
     subject { page }
 
-    describe "when adding a note" do
+    describe 'when adding a note' do
       before do
         click_diff_line
       end
 
-      describe "the notes holder" do
-        it { is_expected.to have_css(".js-temp-notes-holder") }
+      describe 'the notes holder' do
+        it { is_expected.to have_css('.js-temp-notes-holder') }
 
-        it { within(".js-temp-notes-holder") { is_expected.to have_css(".new_note") } }
+        it 'has .new_note css class' do
+          within('.js-temp-notes-holder') do
+            expect(subject).to have_css('.new_note')
+          end
+        end
       end
 
-      describe "the note form" do
+      describe 'the note form' do
         it "shouldn't add a second form for same row" do
           click_diff_line
 
-          is_expected.to have_css("tr[id='#{line_code}'] + .js-temp-notes-holder form", count: 1)
+          is_expected.
+            to have_css("tr[id='#{line_code}'] + .js-temp-notes-holder form",
+                        count: 1)
         end
 
-        it "should be removed when canceled" do
+        it 'should be removed when canceled' do
           within(".diff-file form[rel$='#{line_code}']") do
-            find(".js-close-discussion-note-form").trigger("click")
+            find('.js-close-discussion-note-form').trigger('click')
           end
 
-          is_expected.to have_no_css(".js-temp-notes-holder")
+          is_expected.to have_no_css('.js-temp-notes-holder')
         end
       end
     end
 
-    describe "with muliple note forms" do
+    describe 'with muliple note forms' do
       before do
         click_diff_line
         click_diff_line(line_code_2)
       end
 
-      it { is_expected.to have_css(".js-temp-notes-holder", count: 2) }
+      it { is_expected.to have_css('.js-temp-notes-holder', count: 2) }
 
-      describe "previewing them separately" do
+      describe 'previewing them separately' do
         before do
           # add two separate texts and trigger previews on both
           within("tr[id='#{line_code}'] + .js-temp-notes-holder") do
-            fill_in "note[note]", with: "One comment on line 7"
+            fill_in 'note[note]', with: 'One comment on line 7'
             find('.js-md-preview-button').click
           end
           within("tr[id='#{line_code_2}'] + .js-temp-notes-holder") do
-            fill_in "note[note]", with: "Another comment on line 10"
+            fill_in 'note[note]', with: 'Another comment on line 10'
             find('.js-md-preview-button').click
           end
         end
       end
 
-      describe "posting a note" do
+      describe 'posting a note' do
         before do
           within("tr[id='#{line_code_2}'] + .js-temp-notes-holder") do
-            fill_in "note[note]", with: "Another comment on line 10"
-            click_button("Add Comment")
+            fill_in 'note[note]', with: 'Another comment on line 10'
+            click_button('Add Comment')
           end
         end
 
         it 'should be added as discussion' do
-          is_expected.to have_content("Another comment on line 10")
-          is_expected.to have_css(".notes_holder")
-          is_expected.to have_css(".notes_holder .note", count: 1)
+          is_expected.to have_content('Another comment on line 10')
+          is_expected.to have_css('.notes_holder')
+          is_expected.to have_css('.notes_holder .note', count: 1)
           is_expected.to have_button('Reply')
         end
       end
diff --git a/spec/features/profile_spec.rb b/spec/features/profile_spec.rb
index dfbe65cee9d6f0a4aaba4034408f0fa4607ea6dc..3d36a3c02d043cc989cfc682273d2c5c6b989e2d 100644
--- a/spec/features/profile_spec.rb
+++ b/spec/features/profile_spec.rb
@@ -1,34 +1,34 @@
 require 'spec_helper'
 
-describe "Profile account page", feature: true do
+describe 'Profile account page', feature: true do
   let(:user) { create(:user) }
 
   before do
     login_as :user
   end
 
-  describe "when signup is enabled" do
+  describe 'when signup is enabled' do
     before do
       ApplicationSetting.any_instance.stub(signup_enabled?: true)
       visit profile_account_path
     end
 
-    it { expect(page).to have_content("Remove account") }
+    it { expect(page).to have_content('Remove account') }
 
-    it "should delete the account" do
-      expect { click_link "Delete account" }.to change {User.count}.by(-1)
+    it 'should delete the account' do
+      expect { click_link 'Delete account' }.to change { User.count }.by(-1)
       expect(current_path).to eq(new_user_session_path)
     end
   end
 
-  describe "when signup is disabled" do
+  describe 'when signup is disabled' do
     before do
       ApplicationSetting.any_instance.stub(signup_enabled?: false)
       visit profile_account_path
     end
 
-    it "should not have option to remove account" do
-      expect(page).not_to have_content("Remove account")
+    it 'should not have option to remove account' do
+      expect(page).not_to have_content('Remove account')
       expect(current_path).to eq(profile_account_path)
     end
   end
diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb
index 9c8c8ab4b0fa9c5699b28940174f0d056950d1b3..61d6c906ad0f87ba68dbda8db6f53dd95d54f10a 100644
--- a/spec/helpers/application_helper_spec.rb
+++ b/spec/helpers/application_helper_spec.rb
@@ -46,7 +46,8 @@ describe ApplicationHelper do
       group = create(:group)
       group.avatar = File.open(avatar_file_path)
       group.save!
-      expect(group_icon(group.path).to_s).to match("/uploads/group/avatar/#{ group.id }/gitlab_logo.png")
+      expect(group_icon(group.path).to_s).
+        to match("/uploads/group/avatar/#{ group.id }/gitlab_logo.png")
     end
 
     it 'should give default avatar_icon when no avatar is present' do
@@ -86,7 +87,8 @@ describe ApplicationHelper do
       user = create(:user)
       user.avatar = File.open(avatar_file_path)
       user.save!
-      expect(avatar_icon(user.email).to_s).to match("/uploads/user/avatar/#{ user.id }/gitlab_logo.png")
+      expect(avatar_icon(user.email).to_s).
+        to match("/uploads/user/avatar/#{ user.id }/gitlab_logo.png")
     end
 
     it 'should return an url for the avatar with relative url' do
@@ -96,7 +98,8 @@ describe ApplicationHelper do
       user = create(:user)
       user.avatar = File.open(avatar_file_path)
       user.save!
-      expect(avatar_icon(user.email).to_s).to match("/gitlab/uploads/user/avatar/#{ user.id }/gitlab_logo.png")
+      expect(avatar_icon(user.email).to_s).
+        to match("/gitlab/uploads/user/avatar/#{ user.id }/gitlab_logo.png")
     end
 
     it 'should call gravatar_icon when no avatar is present' do
@@ -120,7 +123,8 @@ describe ApplicationHelper do
 
     it 'should return default gravatar url' do
       Gitlab.config.gitlab.stub(https: false)
-      expect(gravatar_icon(user_email)).to match('http://www.gravatar.com/avatar/b58c6f14d292556214bd64909bcdb118')
+      url = 'http://www.gravatar.com/avatar/b58c6f14d292556214bd64909bcdb118'
+      expect(gravatar_icon(user_email)).to match(url)
     end
 
     it 'should use SSL when appropriate' do
@@ -130,8 +134,11 @@ describe ApplicationHelper do
 
     it 'should return custom gravatar path when gravatar_url is set' do
       allow(self).to receive(:request).and_return(double(:ssl? => false))
-      allow(Gitlab.config.gravatar).to receive(:plain_url).and_return('http://example.local/?s=%{size}&hash=%{hash}')
-      expect(gravatar_icon(user_email, 20)).to eq('http://example.local/?s=20&hash=b58c6f14d292556214bd64909bcdb118')
+      allow(Gitlab.config.gravatar).
+        to receive(:plain_url).
+        and_return('http://example.local/?s=%{size}&hash=%{hash}')
+      url = 'http://example.local/?s=20&hash=b58c6f14d292556214bd64909bcdb118'
+      expect(gravatar_icon(user_email, 20)).to eq(url)
     end
 
     it 'should accept a custom size' do
@@ -146,7 +153,8 @@ describe ApplicationHelper do
 
     it 'should be case insensitive' do
       allow(self).to receive(:request).and_return(double(:ssl? => false))
-      expect(gravatar_icon(user_email)).to eq(gravatar_icon(user_email.upcase + ' '))
+      expect(gravatar_icon(user_email)).
+        to eq(gravatar_icon(user_email.upcase + ' '))
     end
   end
 
@@ -170,7 +178,7 @@ describe ApplicationHelper do
 
     it 'includes a list of tag names' do
       expect(options[1][0]).to eq('Tags')
-      expect(options[1][1]).to include('v1.0.0','v1.1.0')
+      expect(options[1][1]).to include('v1.0.0', 'v1.1.0')
     end
 
     it 'includes a specific commit ref if defined' do
@@ -183,9 +191,11 @@ describe ApplicationHelper 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'])
 
-      expect(options[1][1]).to eq(['v3.1.4.2', 'v2.0', 'v1.0.10', 'v1.0.9a', 'v1.0.9'])
+      expect(options[1][1]).
+        to eq(['v3.1.4.2', 'v2.0', 'v1.0.10', 'v1.0.9a', 'v1.0.9'])
     end
   end
 
diff --git a/spec/helpers/broadcast_messages_helper_spec.rb b/spec/helpers/broadcast_messages_helper_spec.rb
index cf310b893e07a472e03071da20a054dbec6a9394..f6df12662bb1a78a44d1647823d8f538979274c6 100644
--- a/spec/helpers/broadcast_messages_helper_spec.rb
+++ b/spec/helpers/broadcast_messages_helper_spec.rb
@@ -14,7 +14,8 @@ describe BroadcastMessagesHelper do
       before { broadcast_message.stub(color: "#f2dede", font: "#b94a48") }
 
       it "should have a customized style" do
-        expect(broadcast_styling(broadcast_message)).to match('background-color:#f2dede;color:#b94a48')
+        expect(broadcast_styling(broadcast_message)).
+          to match('background-color:#f2dede;color:#b94a48')
       end
     end
   end
diff --git a/spec/helpers/diff_helper_spec.rb b/spec/helpers/diff_helper_spec.rb
index 75da43a68a64384aa8c7b05e26ddd278885667ba..5bd09793b11dac1209da4d095263dc0b728d1181 100644
--- a/spec/helpers/diff_helper_spec.rb
+++ b/spec/helpers/diff_helper_spec.rb
@@ -10,7 +10,7 @@ describe DiffHelper do
 
   describe 'diff_hard_limit_enabled?' do
     it 'should return true if param is provided' do
-      allow(controller).to receive(:params) { { :force_show_diff => true } }
+      allow(controller).to receive(:params) { { force_show_diff: true } }
       expect(diff_hard_limit_enabled?).to be_truthy
     end
 
@@ -21,7 +21,7 @@ describe DiffHelper do
 
   describe 'allowed_diff_size' do
     it 'should return hard limit for a diff if force diff is true' do
-      allow(controller).to receive(:params) { { :force_show_diff => true } }
+      allow(controller).to receive(:params) { { force_show_diff: true } }
       expect(allowed_diff_size).to eq(1000)
     end
 
@@ -32,13 +32,15 @@ describe DiffHelper do
 
   describe 'parallel_diff' do
     it 'should return an array of arrays containing the parsed diff' do
-      expect(parallel_diff(diff_file, 0)).to match_array(parallel_diff_result_array)
+      expect(parallel_diff(diff_file, 0)).
+        to match_array(parallel_diff_result_array)
     end
   end
 
   describe 'generate_line_code' do
     it 'should generate correct line code' do
-      expect(generate_line_code(diff_file.file_path, diff_file.diff_lines.first)).to eq('2f6fcd96b88b36ce98c38da085c795a27d92a3dd_6_6')
+      expect(generate_line_code(diff_file.file_path, diff_file.diff_lines.first)).
+        to eq('2f6fcd96b88b36ce98c38da085c795a27d92a3dd_6_6')
     end
   end
 
@@ -55,12 +57,13 @@ describe DiffHelper do
   describe 'diff_line_content' do
 
     it 'should return non breaking space when line is empty' do
-      expect(diff_line_content(nil)).to eq(" &nbsp;")
+      expect(diff_line_content(nil)).to eq(' &nbsp;')
     end
 
     it 'should return the line itself' do
-      expect(diff_line_content(diff_file.diff_lines.first.text)).to eq("@@ -6,12 +6,18 @@ module Popen")
-      expect(diff_line_content(diff_file.diff_lines.first.type)).to eq("match")
+      expect(diff_line_content(diff_file.diff_lines.first.text)).
+        to eq('@@ -6,12 +6,18 @@ module Popen')
+      expect(diff_line_content(diff_file.diff_lines.first.type)).to eq('match')
       expect(diff_line_content(diff_file.diff_lines.first.new_pos)).to eq(6)
     end
   end
diff --git a/spec/helpers/gitlab_markdown_helper_spec.rb b/spec/helpers/gitlab_markdown_helper_spec.rb
index 87d45faa207c232a7802cf54279ebc268abd9023..317a559f83cb38a7eaef3f824864e512d9feed71 100644
--- a/spec/helpers/gitlab_markdown_helper_spec.rb
+++ b/spec/helpers/gitlab_markdown_helper_spec.rb
@@ -1,4 +1,4 @@
-require "spec_helper"
+require 'spec_helper'
 
 describe GitlabMarkdownHelper do
   include ApplicationHelper
@@ -42,7 +42,8 @@ describe GitlabMarkdownHelper do
     end
 
     it "should not touch HTML entities" do
-      allow(@project.issues).to receive(:where).with(id: '39').and_return([issue])
+      allow(@project.issues).to receive(:where).
+        with(id: '39').and_return([issue])
       actual = 'We&#39;ll accept good pull requests.'
       expect(gfm(actual)).to eq("We'll accept good pull requests.")
     end
@@ -156,7 +157,8 @@ describe GitlabMarkdownHelper do
         expect(gfm(actual.gsub(reference, "(#{reference})"))).to match(expected)
 
         # Append some text to the end of the reference
-        expect(gfm(actual.gsub(reference, "#{reference}, right?"))).to match(expected)
+        expect(gfm(actual.gsub(reference, "#{reference}, right?"))).
+          to match(expected)
       end
 
       it "should keep whitespace intact" do
@@ -216,9 +218,8 @@ describe GitlabMarkdownHelper do
         )
 
         # Append some text to the end of the reference
-        expect(gfm(actual.gsub(full_reference, "#{full_reference}, right?"))).to(
-          match(expected)
-        )
+        expect(gfm(actual.gsub(full_reference, "#{full_reference}, right?"))).
+          to(match(expected))
       end
 
       it 'should keep whitespace intact' do
@@ -315,7 +316,8 @@ describe GitlabMarkdownHelper do
         expect(gfm(actual.gsub(reference, "(#{reference})"))).to match(expected)
 
         # Append some text to the end of the reference
-        expect(gfm(actual.gsub(reference, "#{reference}, right?"))).to match(expected)
+        expect(gfm(actual.gsub(reference, "#{reference}, right?"))).
+          to match(expected)
       end
 
       it "should keep whitespace intact" do
@@ -471,7 +473,8 @@ describe GitlabMarkdownHelper do
       expect(groups[0]).to match(/This should finally fix $/)
 
       # First issue link
-      expect(groups[1]).to match(/href="#{project_issue_url(project, issues[0])}"/)
+      expect(groups[1]).
+        to match(/href="#{project_issue_url(project, issues[0])}"/)
       expect(groups[1]).to match(/##{issues[0].iid}$/)
 
       # Internal commit link
@@ -479,7 +482,8 @@ describe GitlabMarkdownHelper do
       expect(groups[2]).to match(/ and /)
 
       # Second issue link
-      expect(groups[3]).to match(/href="#{project_issue_url(project, issues[1])}"/)
+      expect(groups[3]).
+        to match(/href="#{project_issue_url(project, issues[1])}"/)
       expect(groups[3]).to match(/##{issues[1].iid}$/)
 
       # Trailing commit link
@@ -494,7 +498,8 @@ describe GitlabMarkdownHelper do
 
     it "escapes HTML passed in as the body" do
       actual = "This is a <h1>test</h1> - see ##{issues[0].iid}"
-      expect(link_to_gfm(actual, commit_path)).to match('&lt;h1&gt;test&lt;/h1&gt;')
+      expect(link_to_gfm(actual, commit_path)).
+        to match('&lt;h1&gt;test&lt;/h1&gt;')
     end
   end
 
@@ -508,16 +513,20 @@ describe GitlabMarkdownHelper do
     it "should handle references in headers" do
       actual = "\n# Working around ##{issue.iid}\n## Apply !#{merge_request.iid}"
 
-      expect(markdown(actual, {no_header_anchors:true})).to match(%r{<h1[^<]*>Working around <a.+>##{issue.iid}</a></h1>})
-      expect(markdown(actual, {no_header_anchors:true})).to match(%r{<h2[^<]*>Apply <a.+>!#{merge_request.iid}</a></h2>})
+      expect(markdown(actual, no_header_anchors: true)).
+        to match(%r{<h1[^<]*>Working around <a.+>##{issue.iid}</a></h1>})
+      expect(markdown(actual, no_header_anchors: true)).
+        to match(%r{<h2[^<]*>Apply <a.+>!#{merge_request.iid}</a></h2>})
     end
 
     it "should add ids and links to headers" do
       # Test every rule except nested tags.
       text = '..Ab_c-d. e..'
       id = 'ab_c-d-e'
-      expect(markdown("# #{text}")).to match(%r{<h1 id="#{id}">#{text}<a href="[^"]*##{id}"></a></h1>})
-      expect(markdown("# #{text}", {no_header_anchors:true})).to eq("<h1>#{text}</h1>")
+      expect(markdown("# #{text}")).
+        to match(%r{<h1 id="#{id}">#{text}<a href="[^"]*##{id}"></a></h1>})
+      expect(markdown("# #{text}", {no_header_anchors:true})).
+      to eq("<h1>#{text}</h1>")
 
       id = 'link-text'
       expect(markdown("# [link text](url) ![img alt](url)")).to match(
@@ -530,13 +539,16 @@ describe GitlabMarkdownHelper do
 
       actual = "\n* dark: ##{issue.iid}\n* light by @#{member.user.username}"
 
-      expect(markdown(actual)).to match(%r{<li>dark: <a.+>##{issue.iid}</a></li>})
-      expect(markdown(actual)).to match(%r{<li>light by <a.+>@#{member.user.username}</a></li>})
+      expect(markdown(actual)).
+        to match(%r{<li>dark: <a.+>##{issue.iid}</a></li>})
+      expect(markdown(actual)).
+        to match(%r{<li>light by <a.+>@#{member.user.username}</a></li>})
     end
 
     it "should not link the apostrophe to issue 39" do
       project.team << [user, :master]
-      allow(project.issues).to receive(:where).with(iid: '39').and_return([issue])
+      allow(project.issues).
+        to receive(:where).with(iid: '39').and_return([issue])
 
       actual   = "Yes, it is @#{member.user.username}'s task."
       expected = /Yes, it is <a.+>@#{member.user.username}<\/a>'s task/
@@ -545,7 +557,8 @@ describe GitlabMarkdownHelper do
 
     it "should not link the apostrophe to issue 39 in code blocks" do
       project.team << [user, :master]
-      allow(project.issues).to receive(:where).with(iid: '39').and_return([issue])
+      allow(project.issues).
+        to receive(:where).with(iid: '39').and_return([issue])
 
       actual   = "Yes, `it is @#{member.user.username}'s task.`"
       expected = /Yes, <code>it is @gfm\'s task.<\/code>/
@@ -555,7 +568,8 @@ describe GitlabMarkdownHelper do
     it "should handle references in <em>" do
       actual = "Apply _!#{merge_request.iid}_ ASAP"
 
-      expect(markdown(actual)).to match(%r{Apply <em><a.+>!#{merge_request.iid}</a></em>})
+      expect(markdown(actual)).
+        to match(%r{Apply <em><a.+>!#{merge_request.iid}</a></em>})
     end
 
     it "should handle tables" do
@@ -572,8 +586,10 @@ describe GitlabMarkdownHelper do
 
       target_html = "<pre class=\"code highlight white plaintext\"><code>some code from $40\nhere too\n</code></pre>\n"
 
-      expect(helper.markdown("\n    some code from $#{snippet.id}\n    here too\n")).to eq(target_html)
-      expect(helper.markdown("\n```\nsome code from $#{snippet.id}\nhere too\n```\n")).to eq(target_html)
+      expect(helper.markdown("\n    some code from $#{snippet.id}\n    here too\n")).
+        to eq(target_html)
+      expect(helper.markdown("\n```\nsome code from $#{snippet.id}\nhere too\n```\n")).
+        to eq(target_html)
     end
 
     it "should leave inline code untouched" do