diff --git a/Gemfile b/Gemfile
index b9ef6b1f46b0755eaf2d5be32b348f71825d4e90..3a10e7f2a30fd12c110922ddb2128fbdd2b5d826 100644
--- a/Gemfile
+++ b/Gemfile
@@ -14,7 +14,6 @@ gem "protected_attributes"
 gem 'rails-observers'
 gem 'actionpack-page_caching'
 gem 'actionpack-action_caching'
-gem 'activerecord-deprecated_finders'
 
 # Supported DBs
 gem "mysql2", group: :mysql
diff --git a/Gemfile.lock b/Gemfile.lock
index 80d98a50889a4400b311aee54f33741ce6e71395..cb55d58ed41ddec65e5c9e0d195fd0e282ab7495 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -549,7 +549,6 @@ PLATFORMS
 DEPENDENCIES
   actionpack-action_caching
   actionpack-page_caching
-  activerecord-deprecated_finders
   acts-as-taggable-on
   annotate (~> 2.6.0.beta2)
   asciidoctor
diff --git a/app/controllers/admin/groups_controller.rb b/app/controllers/admin/groups_controller.rb
index 89b395786b316e92e4bbcdcd838e4067317ac9ec..4bb3cf07da0c78869e1130d847d69245982316f6 100644
--- a/app/controllers/admin/groups_controller.rb
+++ b/app/controllers/admin/groups_controller.rb
@@ -52,6 +52,6 @@ class Admin::GroupsController < Admin::ApplicationController
   private
 
   def group
-    @group = Group.find_by_path(params[:id])
+    @group = Group.find_by(path: params[:id])
   end
 end
diff --git a/app/controllers/admin/projects_controller.rb b/app/controllers/admin/projects_controller.rb
index ea20595047cf964b3c33c8bf2a8446ac42832674..13a7bdcf34a7e8bfb3befb3ef3b0cbe58db15e31 100644
--- a/app/controllers/admin/projects_controller.rb
+++ b/app/controllers/admin/projects_controller.rb
@@ -5,7 +5,7 @@ class Admin::ProjectsController < Admin::ApplicationController
 
   def index
     owner_id = params[:owner_id]
-    user = User.find_by_id(owner_id)
+    user = User.find_by(id: owner_id)
 
     @projects = user ? user.owned_projects : Project.all
     @projects = @projects.where("visibility_level IN (?)", params[:visibility_levels]) if params[:visibility_levels].present?
diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb
index 2f981627137ad86ca5ff86f13a19f80f69be2119..bdbb9a354b464d00d27aee023b41c09a23cc32ea 100644
--- a/app/controllers/admin/users_controller.rb
+++ b/app/controllers/admin/users_controller.rb
@@ -100,6 +100,6 @@ class Admin::UsersController < Admin::ApplicationController
   protected
 
   def user
-    @user ||= User.find_by_username!(params[:id])
+    @user ||= User.find_by!(username: params[:id])
   end
 end
diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb
index d4a4ea80bc60936892a91670c3474a945f9ba948..656eda9dec24667bdc707e63267aec9c7e7dc60d 100644
--- a/app/controllers/dashboard_controller.rb
+++ b/app/controllers/dashboard_controller.rb
@@ -41,7 +41,7 @@ class DashboardController < ApplicationController
                   current_user.authorized_projects
                 end
 
-    @projects = @projects.where(namespace_id: Group.find_by_name(params[:group])) if params[:group].present?
+    @projects = @projects.where(namespace_id: Group.find_by(name: params[:group])) if params[:group].present?
     @projects = @projects.where(visibility_level: params[:visibility_level]) if params[:visibility_level].present?
     @projects = @projects.includes(:namespace)
     @projects = @projects.tagged_with(params[:label]) if params[:label].present?
diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb
index 6a407503ecd7835bcebbd8ed3157ac2d565e3d10..7b418ec98f55af2a902647ff917de4579d462b60 100644
--- a/app/controllers/groups_controller.rb
+++ b/app/controllers/groups_controller.rb
@@ -87,7 +87,7 @@ class GroupsController < ApplicationController
   protected
 
   def group
-    @group ||= Group.find_by_path(params[:id])
+    @group ||= Group.find_by(path: params[:id])
   end
 
   def projects
diff --git a/app/controllers/profiles/groups_controller.rb b/app/controllers/profiles/groups_controller.rb
index 378ff6bcf34a978526c363921a52885ecaffd5e2..bdd991bec06b03f5039526f89befd856c6e43e1a 100644
--- a/app/controllers/profiles/groups_controller.rb
+++ b/app/controllers/profiles/groups_controller.rb
@@ -19,6 +19,6 @@ class Profiles::GroupsController < ApplicationController
   private
 
   def group
-    @group ||= Group.find_by_path(params[:id])
+    @group ||= Group.find_by(path: params[:id])
   end
 end
diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb
index 770fccaa11b6dcd22bdd2fd27b9ad09192f3505e..58ead666d8a633091cb958ee1024edeb3201421b 100644
--- a/app/controllers/projects/issues_controller.rb
+++ b/app/controllers/projects/issues_controller.rb
@@ -97,7 +97,7 @@ class Projects::IssuesController < Projects::ApplicationController
 
   def issue
     @issue ||= begin
-                 @project.issues.find_by_iid!(params[:id])
+                 @project.issues.find_by!(iid: params[:id])
                rescue ActiveRecord::RecordNotFound
                  redirect_old
                end
@@ -128,7 +128,7 @@ class Projects::IssuesController < Projects::ApplicationController
   # To prevent 404 errors we provide a redirect to correct iids until 7.0 release
   #
   def redirect_old
-    issue = @project.issues.find_by_id(params[:id])
+    issue = @project.issues.find_by(id: params[:id])
 
     if issue
       redirect_to project_issue_path(@project, issue)
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index 40564c7f889e916af9d65c5b29e0df8775d152e6..f8ead19ff1e2c90539be1b021bfc294dca777bd3 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -169,7 +169,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
   end
 
   def merge_request
-    @merge_request ||= @project.merge_requests.find_by_iid!(params[:id])
+    @merge_request ||= @project.merge_requests.find_by!(iid: params[:id])
   end
 
   def closes_issues
diff --git a/app/controllers/projects/milestones_controller.rb b/app/controllers/projects/milestones_controller.rb
index ecb1fc1d56604088f7d62b9e5ac0298065c045e9..aea92a19f3456d29920eaeebc8d55d084ad299b3 100644
--- a/app/controllers/projects/milestones_controller.rb
+++ b/app/controllers/projects/milestones_controller.rb
@@ -76,7 +76,7 @@ class Projects::MilestonesController < Projects::ApplicationController
   protected
 
   def milestone
-    @milestone ||= @project.milestones.find_by_iid!(params[:id])
+    @milestone ||= @project.milestones.find_by!(iid: params[:id])
   end
 
   def authorize_admin_milestone!
diff --git a/app/controllers/projects/team_members_controller.rb b/app/controllers/projects/team_members_controller.rb
index 2c40b3c75f29fe723d299aba8be17c79d8fa0c77..44068878cd1054b537ea2c2b4305f5f5c287a11d 100644
--- a/app/controllers/projects/team_members_controller.rb
+++ b/app/controllers/projects/team_members_controller.rb
@@ -26,7 +26,7 @@ class Projects::TeamMembersController < Projects::ApplicationController
   end
 
   def update
-    @user_project_relation = project.users_projects.find_by_user_id(member)
+    @user_project_relation = project.users_projects.find_by(user_id: member)
     @user_project_relation.update_attributes(params[:team_member])
 
     unless @user_project_relation.valid?
@@ -36,7 +36,7 @@ class Projects::TeamMembersController < Projects::ApplicationController
   end
 
   def destroy
-    @user_project_relation = project.users_projects.find_by_user_id(member)
+    @user_project_relation = project.users_projects.find_by(user_id: member)
     @user_project_relation.destroy
 
     respond_to do |format|
@@ -46,7 +46,7 @@ class Projects::TeamMembersController < Projects::ApplicationController
   end
 
   def leave
-    project.users_projects.find_by_user_id(current_user).destroy
+    project.users_projects.find_by(user_id: current_user).destroy
 
     respond_to do |format|
       format.html { redirect_to :back }
@@ -65,6 +65,6 @@ class Projects::TeamMembersController < Projects::ApplicationController
   protected
 
   def member
-    @member ||= User.find_by_username(params[:id])
+    @member ||= User.find_by(username: params[:id])
   end
 end
diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb
index e853c22800ab43a91ac469921dad273a09588638..d98a44ed3fafbf1ed863a7fa6b5bf5284281dc7d 100644
--- a/app/controllers/search_controller.rb
+++ b/app/controllers/search_controller.rb
@@ -1,7 +1,7 @@
 class SearchController < ApplicationController
   def show
-    @project = Project.find_by_id(params[:project_id]) if params[:project_id].present?
-    @group = Group.find_by_id(params[:group_id]) if params[:group_id].present?
+    @project = Project.find_by(id: params[:project_id]) if params[:project_id].present?
+    @group = Group.find_by(id: params[:group_id]) if params[:group_id].present?
 
     if @project
       return access_denied! unless can?(current_user, :download_code, @project)
diff --git a/app/controllers/snippets_controller.rb b/app/controllers/snippets_controller.rb
index b91f68aab5e21d9fb494473f11c1f213e7d714d7..e54a968326f8d163e849e1e8b822f8325c517aeb 100644
--- a/app/controllers/snippets_controller.rb
+++ b/app/controllers/snippets_controller.rb
@@ -18,7 +18,7 @@ class SnippetsController < ApplicationController
   end
 
   def user_index
-    @user = User.find_by_username(params[:username])
+    @user = User.find_by(username: params[:username])
     @snippets = @user.snippets.fresh.non_expired
 
     if @user == current_user
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index ddc7630f891e12f3eef24a88be218afa55c82fd3..6a5ce62909eda01575d372f9dfdfdc8027683289 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -2,7 +2,7 @@ class UsersController < ApplicationController
   layout 'navless'
 
   def show
-    @user = User.find_by_username!(params[:username])
+    @user = User.find_by!(username: params[:username])
     @projects = @user.authorized_projects.where(id: current_user.authorized_projects.pluck(:id)).includes(:namespace)
     @events = @user.recent_events.where(project_id: @projects.map(&:id)).limit(20)
 
diff --git a/app/controllers/users_groups_controller.rb b/app/controllers/users_groups_controller.rb
index 749da1e1413456a34fe7d21a95e44a01c7fa9050..bc5db445528b41223f454754b4c32bfb074e7a45 100644
--- a/app/controllers/users_groups_controller.rb
+++ b/app/controllers/users_groups_controller.rb
@@ -30,7 +30,7 @@ class UsersGroupsController < ApplicationController
   protected
 
   def group
-    @group ||= Group.find_by_path(params[:group_id])
+    @group ||= Group.find_by(path: params[:group_id])
   end
 
   def authorize_admin_group!
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 0db43fa1809c6eb5018836980a440103d31a16a7..e60cba2bb2b34fe49c268b8340a16270c9000ed3 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -50,7 +50,7 @@ module ApplicationHelper
   end
 
   def avatar_icon(user_email = '', size = nil)
-    user = User.find_by_email(user_email)
+    user = User.find_by(email: user_email)
     if user && user.avatar.present?
       user.avatar.url
     else
diff --git a/app/mailers/emails/issues.rb b/app/mailers/emails/issues.rb
index 5abdf99529cb0cec36a075c8e4f3d8842489cc8a..b2b4b83d6c313e947bc6b971ca0caf6d33fb3de3 100644
--- a/app/mailers/emails/issues.rb
+++ b/app/mailers/emails/issues.rb
@@ -8,7 +8,7 @@ module Emails
 
     def reassigned_issue_email(recipient_id, issue_id, previous_assignee_id)
       @issue = Issue.find(issue_id)
-      @previous_assignee = User.find_by_id(previous_assignee_id) if previous_assignee_id
+      @previous_assignee = User.find_by(id: previous_assignee_id) if previous_assignee_id
       @project = @issue.project
       mail(to: recipient(recipient_id), subject: subject("Changed issue ##{@issue.iid}", @issue.title))
     end
diff --git a/app/mailers/emails/merge_requests.rb b/app/mailers/emails/merge_requests.rb
index 25b8bf755e2d6660709fd70d11f1e586f803e338..e60887d525a63b57e110626ddf9439378275020d 100644
--- a/app/mailers/emails/merge_requests.rb
+++ b/app/mailers/emails/merge_requests.rb
@@ -8,7 +8,7 @@ module Emails
 
     def reassigned_merge_request_email(recipient_id, merge_request_id, previous_assignee_id)
       @merge_request = MergeRequest.find(merge_request_id)
-      @previous_assignee = User.find_by_id(previous_assignee_id) if previous_assignee_id
+      @previous_assignee = User.find_by(id: previous_assignee_id) if previous_assignee_id
       @project = @merge_request.project
       mail(to: recipient(recipient_id), subject: subject("Changed merge request ##{@merge_request.iid}", @merge_request.title))
     end
diff --git a/app/models/note.rb b/app/models/note.rb
index 67755f44148ee8a181e12552c122f00dfb93d75d..f4c0be3307fcae893b31dec8dc5f691143ec7d1a 100644
--- a/app/models/note.rb
+++ b/app/models/note.rb
@@ -123,8 +123,8 @@ class Note < ActiveRecord::Base
 
   def commit_author
     @commit_author ||=
-      project.users.find_by_email(noteable.author_email) ||
-      project.users.find_by_name(noteable.author_name)
+      project.users.find_by(email: noteable.author_email) ||
+      project.users.find_by(name: noteable.author_name)
   rescue
     nil
   end
diff --git a/app/models/project.rb b/app/models/project.rb
index f322b5a2e2524f12eff506700cc75a986e860740..8450b91680990fd8f25a39bde26a3e427461bdfb 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -141,10 +141,10 @@ class Project < ActiveRecord::Base
     def find_with_namespace(id)
       if id.include?("/")
         id = id.split("/")
-        namespace = Namespace.find_by_path(id.first)
+        namespace = Namespace.find_by(path: id.first)
         return nil unless namespace
 
-        where(namespace_id: namespace.id).find_by_path(id.second)
+        where(namespace_id: namespace.id).find_by(path: id.second)
       else
         where(path: id, namespace_id: nil).last
       end
@@ -288,7 +288,7 @@ class Project < ActiveRecord::Base
 
   # Get Team Member record by user id
   def team_member_by_id(user_id)
-    users_projects.find_by_user_id(user_id)
+    users_projects.find_by(user_id: user_id)
   end
 
   def name_with_namespace
diff --git a/app/models/project_team.rb b/app/models/project_team.rb
index 5630f280aea13841b6ecb6ca9c20a22152ba4038..eca13e56061a267a1d075681985cbb1427a4283b 100644
--- a/app/models/project_team.rb
+++ b/app/models/project_team.rb
@@ -22,22 +22,22 @@ class ProjectTeam
   end
 
   def find(user_id)
-    user = project.users.find_by_id(user_id)
+    user = project.users.find_by(id: user_id)
 
     if group
-      user ||= group.users.find_by_id(user_id)
+      user ||= group.users.find_by(id: user_id)
     end
 
     user
   end
 
   def find_tm(user_id)
-    tm = project.users_projects.find_by_user_id(user_id)
+    tm = project.users_projects.find_by(user_id: user_id)
 
     # If user is not in project members
     # we should check for group membership
     if group && !tm
-      tm = group.users_groups.find_by_user_id(user_id)
+      tm = group.users_groups.find_by(user_id: user_id)
     end
 
     tm
diff --git a/app/models/user.rb b/app/models/user.rb
index f2cd554f9c3831f67fbc1d018f0e010e2acf9899..fd2bf34e0c314d04905e2945ce331bb1543c4038 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -238,7 +238,7 @@ class User < ActiveRecord::Base
 
   def namespace_uniq
     namespace_name = self.username
-    if Namespace.find_by_path(namespace_name)
+    if Namespace.find_by(path: namespace_name)
       self.errors.add :username, "already exist"
     end
   end
@@ -382,7 +382,7 @@ class User < ActiveRecord::Base
   end
 
   def created_by
-    User.find_by_id(created_by_id) if created_by_id
+    User.find_by(id: created_by_id) if created_by_id
   end
 
   def sanitize_attrs
diff --git a/app/services/notification_service.rb b/app/services/notification_service.rb
index ebbb556b63cff322419d4d218bb9a90981eceba4..7c02777e9141363312977c601aa792a3e03e3d71 100644
--- a/app/services/notification_service.rb
+++ b/app/services/notification_service.rb
@@ -195,10 +195,10 @@ class NotificationService
     users.reject do |user|
       next user.notification.disabled? unless project
 
-      tm = project.users_projects.find_by_user_id(user.id)
+      tm = project.users_projects.find_by(user_id: user.id)
 
       if !tm && project.group
-        tm = project.group.users_groups.find_by_user_id(user.id)
+        tm = project.group.users_groups.find_by(user_id: user.id)
       end
 
       # reject users who globally disabled notification and has no membership
diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb
index 033be8f9ed6c40bcc951628671a9cc9af093dd4c..ba131d8ffbe73f5b95f39bde1c38d884890d624f 100644
--- a/app/services/projects/create_service.rb
+++ b/app/services/projects/create_service.rb
@@ -73,7 +73,7 @@ module Projects
     end
 
     def allowed_namespace?(user, namespace_id)
-      namespace = Namespace.find_by_id(namespace_id)
+      namespace = Namespace.find_by(id: namespace_id)
       current_user.can?(:manage_namespace, namespace)
     end
   end
diff --git a/app/services/search/global_service.rb b/app/services/search/global_service.rb
index c5ca332236210bba89728c6eaff8741fbe379c2c..c1130401578a41846406b45edb7e191af4601f6b 100644
--- a/app/services/search/global_service.rb
+++ b/app/services/search/global_service.rb
@@ -15,7 +15,7 @@ module Search
       authorized_projects_ids += current_user.authorized_projects.pluck(:id) if current_user
       authorized_projects_ids += Project.public_or_internal_only(current_user).pluck(:id)
 
-      group = Group.find_by_id(params[:group_id]) if params[:group_id].present?
+      group = Group.find_by(id: params[:group_id]) if params[:group_id].present?
       projects = Project.where(id: authorized_projects_ids)
       projects = projects.where(namespace_id: group.id) if group
       projects = projects.search(query)
diff --git a/db/fixtures/development/04_project.rb b/db/fixtures/development/04_project.rb
index 6fdb163c27dba0f00351dddd54df2666556c9fff..990575306c3625c90910e570a21b0e0321314028 100644
--- a/db/fixtures/development/04_project.rb
+++ b/db/fixtures/development/04_project.rb
@@ -19,7 +19,7 @@ project_urls = [
 project_urls.each_with_index do |url, i|
   group_path, project_path = url.split('/')[-2..-1]
 
-  group = Group.find_by_path(group_path)
+  group = Group.find_by(path: group_path)
 
   unless group
     group = Group.new(
diff --git a/db/migrate/20130506095501_remove_project_id_from_key.rb b/db/migrate/20130506095501_remove_project_id_from_key.rb
index 4214fd45d141b44c496ccc335b430d7bda964a8a..6b794cfb5c133e7d717824c3c592a95ca9130bed 100644
--- a/db/migrate/20130506095501_remove_project_id_from_key.rb
+++ b/db/migrate/20130506095501_remove_project_id_from_key.rb
@@ -4,7 +4,7 @@ class RemoveProjectIdFromKey < ActiveRecord::Migration
     Key.where('project_id IS NOT NULL').update_all(type: 'DeployKey')
 
     DeployKey.all.each do |key|
-      project = Project.find_by_id(key.project_id)
+      project = Project.find_by(id: key.project_id)
       if project
         project.deploy_keys << key
         print '.'
diff --git a/features/steps/admin/admin_groups.rb b/features/steps/admin/admin_groups.rb
index b4591f227e39aa64183be18056b7c6e30bd5049d..013fa6da8b4c5d54f3d0314bc11cb1df4cfdf218 100644
--- a/features/steps/admin/admin_groups.rb
+++ b/features/steps/admin/admin_groups.rb
@@ -40,7 +40,7 @@ class AdminGroups < Spinach::FeatureSteps
   end
 
   When 'I select user "John" from user list as "Reporter"' do
-    user = User.find_by_name("John")
+    user = User.find_by(name: "John")
     select2(user.id, from: "#user_ids", multiple: true)
     within "#new_team_member" do
       select "Reporter", from: "group_access"
diff --git a/features/steps/dashboard/dashboard.rb b/features/steps/dashboard/dashboard.rb
index bde32128b9237695e733b4df283801f4f4f20d88..3526006c94af2bf0e5f0419b2d3b455d92832846 100644
--- a/features/steps/dashboard/dashboard.rb
+++ b/features/steps/dashboard/dashboard.rb
@@ -43,7 +43,7 @@ class Dashboard < Spinach::FeatureSteps
   end
 
   And 'user with name "John Doe" left project "Shop"' do
-    user = User.find_by_name "John Doe"
+    user = User.find_by(name: "John Doe")
     Event.create(
       project: project,
       author_id: user.id,
@@ -85,6 +85,6 @@ class Dashboard < Spinach::FeatureSteps
   end
 
   def project
-    @project ||= Project.find_by_name "Shop"
+    @project ||= Project.find_by(name: "Shop")
   end
 end
diff --git a/features/steps/dashboard/dashboard_with_archived_projects.rb b/features/steps/dashboard/dashboard_with_archived_projects.rb
index 700f4b426c328c16f5c2791ffaa9efcae508050a..1bc69555b56fc283f5b1ffbf055ecef0be4d9958 100644
--- a/features/steps/dashboard/dashboard_with_archived_projects.rb
+++ b/features/steps/dashboard/dashboard_with_archived_projects.rb
@@ -4,7 +4,7 @@ class DashboardWithArchivedProjects < Spinach::FeatureSteps
   include SharedProject
 
   When 'project "Forum" is archived' do
-    project = Project.find_by_name "Forum"
+    project = Project.find_by(name: "Forum")
     project.update_attribute(:archived, true)
   end
 
diff --git a/features/steps/group/group.rb b/features/steps/group/group.rb
index bcadf21c233e04395f44b8445805e5bd1c06d012..15d7c46c6949f927a1b4349d4dbaf178ae54aa81 100644
--- a/features/steps/group/group.rb
+++ b/features/steps/group/group.rb
@@ -39,7 +39,7 @@ class Groups < Spinach::FeatureSteps
   end
 
   And 'I select user "John" from list with role "Reporter"' do
-    user = User.find_by_name("John")
+    user = User.find_by(name: "John")
     within ".users-group-form" do
       select2(user.id, from: "#user_ids", multiple: true)
       select "Reporter", from: "group_access"
diff --git a/features/steps/profile/profile_ssh_keys.rb b/features/steps/profile/profile_ssh_keys.rb
index 65bfc505d85834a9e3d0e84ebeb8f2817e04bdd2..65ca824bb5b24941b6aa9027cb0025d87393e7df 100644
--- a/features/steps/profile/profile_ssh_keys.rb
+++ b/features/steps/profile/profile_ssh_keys.rb
@@ -18,7 +18,7 @@ class ProfileSshKeys < Spinach::FeatureSteps
   end
 
   Then 'I should see new ssh key "Laptop"' do
-    key = Key.find_by_title("Laptop")
+    key = Key.find_by(title: "Laptop")
     page.should have_content(key.title)
     page.should have_content(key.key)
     current_path.should == profile_key_path(key)
diff --git a/features/steps/project/project_archived.rb b/features/steps/project/project_archived.rb
index 149d293cd08ec999093d9bc52b41672f403f6d16..dfbe762c438389548d49b22dfd640540cf13f252 100644
--- a/features/steps/project/project_archived.rb
+++ b/features/steps/project/project_archived.rb
@@ -4,17 +4,17 @@ class ProjectArchived < Spinach::FeatureSteps
   include SharedPaths
 
   When 'project "Forum" is archived' do
-    project = Project.find_by_name "Forum"
+    project = Project.find_by(name: "Forum")
     project.update_attribute(:archived, true)
   end
 
   When 'project "Shop" is archived' do
-    project = Project.find_by_name "Shop"
+    project = Project.find_by(name: "Shop")
     project.update_attribute(:archived, true)
   end
 
   When 'I visit project "Forum" page' do
-    project = Project.find_by_name "Forum"
+    project = Project.find_by(name: "Forum")
     visit project_path(project)
   end
 
diff --git a/features/steps/project/project_browse_branches.rb b/features/steps/project/project_browse_branches.rb
index e77825411f306ceeda49ec46d15fd940c59a0f8b..ef29cc67a4eaa05a7e4517ede9326bf85bbe7354 100644
--- a/features/steps/project/project_browse_branches.rb
+++ b/features/steps/project/project_browse_branches.rb
@@ -29,7 +29,7 @@ class ProjectBrowseBranches < Spinach::FeatureSteps
   end
 
   And 'project "Shop" has protected branches' do
-    project = Project.find_by_name("Shop")
+    project = Project.find_by(name: "Shop")
     project.protected_branches.create(name: "stable")
   end
 end
diff --git a/features/steps/project/project_fork.rb b/features/steps/project/project_fork.rb
index 858c7d11b32ff1fe0f3e80ea0393015bcfb40527..128687ca286520a33638dbf101036b9cd869d72e 100644
--- a/features/steps/project/project_fork.rb
+++ b/features/steps/project/project_fork.rb
@@ -11,7 +11,7 @@ class ForkProject < Spinach::FeatureSteps
   end
 
   step 'I am a member of project "Shop"' do
-    @project = Project.find_by_name "Shop"
+    @project = Project.find_by(name: "Shop")
     @project ||= create(:project_with_code, name: "Shop", group: create(:group))
     @project.team << [@user, :reporter]
   end
@@ -19,7 +19,7 @@ class ForkProject < Spinach::FeatureSteps
   step 'I should see the forked project page' do
     page.should have_content "Project was successfully forked."
     current_path.should include current_user.namespace.path
-    @forked_project = Project.find_by_namespace_id(current_user.namespace.path)
+    @forked_project = Project.find_by(namespace_id: current_user.namespace.path)
   end
 
   step 'I already have a project named "Shop" in my namespace' do
diff --git a/features/steps/project/project_forked_merge_requests.rb b/features/steps/project/project_forked_merge_requests.rb
index d34aeac30bb2889415085022f1fe86ed78c6f3ab..a8198532ae866a10d5bcc87845c9f004999c5a41 100644
--- a/features/steps/project/project_forked_merge_requests.rb
+++ b/features/steps/project/project_forked_merge_requests.rb
@@ -6,7 +6,7 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps
   include Select2Helper
 
   step 'I am a member of project "Shop"' do
-    @project = Project.find_by_name "Shop"
+    @project = Project.find_by(name: "Shop")
     @project ||= create(:project_with_code, name: "Shop")
     @project.team << [@user, :reporter]
   end
@@ -14,7 +14,7 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps
   step 'I have a project forked off of "Shop" called "Forked Shop"' do
     @forking_user = @user
     forked_project_link = build(:forked_project_link)
-    @forked_project = Project.find_by_name "Forked Shop"
+    @forked_project = Project.find_by(name: "Forked Shop")
     @forked_project ||= create(:source_project_with_code, name: "Forked Shop", forked_project_link: forked_project_link, creator_id: @forking_user.id , namespace: @forking_user.namespace)
 
     forked_project_link.forked_from_project = @project
@@ -114,7 +114,7 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps
   end
 
   step 'project "Forked Shop" has push event' do
-    @forked_project = Project.find_by_name("Forked Shop")
+    @forked_project = Project.find_by(name: "Forked Shop")
 
     data = {
       before: "0000000000000000000000000000000000000000",
@@ -172,7 +172,7 @@ class ProjectForkedMergeRequests < Spinach::FeatureSteps
   end
 
   def project
-    @project ||= Project.find_by_name!("Shop")
+    @project ||= Project.find_by!(name: "Shop")
   end
 
   # Verify a link is generated against the correct project
diff --git a/features/steps/project/project_graph.rb b/features/steps/project/project_graph.rb
index 50942b3cbb3210017aed126f7896c7405e2a17e4..89fe5fdeadfbcc3ac53fecc7e2f15c3c73464132 100644
--- a/features/steps/project/project_graph.rb
+++ b/features/steps/project/project_graph.rb
@@ -7,7 +7,7 @@ class ProjectGraph < Spinach::FeatureSteps
   end
 
   When 'I visit project "Shop" graph page' do
-    project = Project.find_by_name("Shop")
+    project = Project.find_by(name: "Shop")
     visit project_graph_path(project, "master")
   end
 end
diff --git a/features/steps/project/project_issue_tracker.rb b/features/steps/project/project_issue_tracker.rb
index a05d7a0bc3708e5e85e4c01a7aa5c21960d7d6e1..fe41a900a90936c9ab3690dfe7a2e1dc1edd7088 100644
--- a/features/steps/project/project_issue_tracker.rb
+++ b/features/steps/project/project_issue_tracker.rb
@@ -4,7 +4,7 @@ class ProjectIssueTracker < Spinach::FeatureSteps
   include SharedPaths
 
   step 'project "Shop" has issues enabled' do
-    @project = Project.find_by_name "Shop"
+    @project = Project.find_by(name: "Shop")
     @project ||= create(:project_with_code, name: "Shop", namespace: @user.namespace)
     @project.issues_enabled = true
   end
diff --git a/features/steps/project/project_issues.rb b/features/steps/project/project_issues.rb
index 801fff78a52289a06fadc7b63f4cc192045e015c..4a503dfaf4f50618f36ef3897fb94467ecf9370d 100644
--- a/features/steps/project/project_issues.rb
+++ b/features/steps/project/project_issues.rb
@@ -54,7 +54,7 @@ class ProjectIssues < Spinach::FeatureSteps
   end
 
   Then 'I should see issue "500 error on profile"' do
-    issue = Issue.find_by_title("500 error on profile")
+    issue = Issue.find_by(title: "500 error on profile")
     page.should have_content issue.title
     page.should have_content issue.author_name
     page.should have_content issue.project.name
@@ -81,14 +81,14 @@ class ProjectIssues < Spinach::FeatureSteps
   end
 
   Given 'project "Shop" has milestone "v2.2"' do
-    project = Project.find_by_name("Shop")
+    project = Project.find_by(name: "Shop")
     milestone = create(:milestone, title: "v2.2", project: project)
 
     3.times { create(:issue, project: project, milestone: milestone) }
   end
 
   And 'project "Shop" has milestone "v3.0"' do
-    project = Project.find_by_name("Shop")
+    project = Project.find_by(name: "Shop")
     milestone = create(:milestone, title: "v3.0", project: project)
 
     3.times { create(:issue, project: project, milestone: milestone) }
@@ -104,20 +104,20 @@ class ProjectIssues < Spinach::FeatureSteps
   end
 
   When 'I select first assignee from "Shop" project' do
-    project = Project.find_by_name "Shop"
+    project = Project.find_by(name: "Shop")
     first_assignee = project.users.first
     select first_assignee.name, from: "assignee_id"
   end
 
   Then 'I should see first assignee from "Shop" as selected assignee' do
     issues_assignee_selector = "#issue_assignee_id_chzn > a"
-    project = Project.find_by_name "Shop"
+    project = Project.find_by(name: "Shop")
     assignee_name = project.users.first.name
     page.find(issues_assignee_selector).should have_content(assignee_name)
   end
 
   And 'project "Shop" have "Release 0.4" open issue' do
-    project = Project.find_by_name("Shop")
+    project = Project.find_by(name: "Shop")
     create(:issue,
            title: "Release 0.4",
            project: project,
@@ -125,7 +125,7 @@ class ProjectIssues < Spinach::FeatureSteps
   end
 
   And 'project "Shop" have "Tweet control" open issue' do
-    project = Project.find_by_name("Shop")
+    project = Project.find_by(name: "Shop")
     create(:issue,
            title: "Tweet control",
            project: project,
@@ -133,7 +133,7 @@ class ProjectIssues < Spinach::FeatureSteps
   end
 
   And 'project "Shop" have "Release 0.3" closed issue' do
-    project = Project.find_by_name("Shop")
+    project = Project.find_by(name: "Shop")
     create(:closed_issue,
            title: "Release 0.3",
            project: project,
diff --git a/features/steps/project/project_labels.rb b/features/steps/project/project_labels.rb
index 915190f3dae2f1e9f05bb5c7257084e2684446d2..0907cdb526f5b1178abc28393504bb62ccf319b7 100644
--- a/features/steps/project/project_labels.rb
+++ b/features/steps/project/project_labels.rb
@@ -16,7 +16,7 @@ class ProjectLabels < Spinach::FeatureSteps
   end
 
   And 'project "Shop" have issues tags: "bug", "feature"' do
-    project = Project.find_by_name("Shop")
+    project = Project.find_by(name: "Shop")
     ['bug', 'feature'].each do |label|
       create(:issue, project: project, label_list: label)
     end
diff --git a/features/steps/project/project_markdown_render.rb b/features/steps/project/project_markdown_render.rb
index da044e46ebd2320ff0b9853efc5dabf7563114a6..3c5c3e09da9e8535a4eaaa43ef4e315589a637d9 100644
--- a/features/steps/project/project_markdown_render.rb
+++ b/features/steps/project/project_markdown_render.rb
@@ -3,7 +3,7 @@ class Spinach::Features::ProjectMarkdownRender < Spinach::FeatureSteps
   include SharedPaths
 
   And 'I own project "Delta"' do
-    @project = Project.find_by_name "Delta"
+    @project = Project.find_by(name: "Delta")
     @project ||= create(:project_with_code, name: "Delta", namespace: @user.namespace)
     @project.team << [@user, :master]
   end
diff --git a/features/steps/project/project_merge_requests.rb b/features/steps/project/project_merge_requests.rb
index 8ef952cf3d1d4b76d8f1f944d58c5e21e2f54b99..b771c8d1392b69b1e38ce5e10ae081b1efe1d3cb 100644
--- a/features/steps/project/project_merge_requests.rb
+++ b/features/steps/project/project_merge_requests.rb
@@ -27,7 +27,7 @@ class ProjectMergeRequests < Spinach::FeatureSteps
   end
 
   step 'I should see closed merge request "Bug NS-04"' do
-    merge_request = MergeRequest.find_by_title!("Bug NS-04")
+    merge_request = MergeRequest.find_by!(title: "Bug NS-04")
     merge_request.closed?.should be_true
     page.should have_content "Closed by"
   end
@@ -180,11 +180,11 @@ class ProjectMergeRequests < Spinach::FeatureSteps
   end
 
   def project
-    @project ||= Project.find_by_name!("Shop")
+    @project ||= Project.find_by!(name: "Shop")
   end
 
   def merge_request
-    @merge_request ||= MergeRequest.find_by_title!("Bug NS-05")
+    @merge_request ||= MergeRequest.find_by!(title: "Bug NS-05")
   end
 
   def init_diff_note
diff --git a/features/steps/project/project_milestones.rb b/features/steps/project/project_milestones.rb
index c4d0d176f3a8d5f7761db57df7156b2876e5df19..85962221c0fcb56edead27f88cde6097d545a9be 100644
--- a/features/steps/project/project_milestones.rb
+++ b/features/steps/project/project_milestones.rb
@@ -4,7 +4,7 @@ class ProjectMilestones < Spinach::FeatureSteps
   include SharedPaths
 
   Then 'I should see milestone "v2.2"' do
-    milestone = @project.milestones.find_by_title("v2.2")
+    milestone = @project.milestones.find_by(title: "v2.2")
     page.should have_content(milestone.title[0..10])
     page.should have_content(milestone.expires_at)
     page.should have_content("Browse Issues")
@@ -24,22 +24,22 @@ class ProjectMilestones < Spinach::FeatureSteps
   end
 
   Then 'I should see milestone "v2.3"' do
-    milestone = @project.milestones.find_by_title("v2.3")
+    milestone = @project.milestones.find_by(title: "v2.3")
     page.should have_content(milestone.title[0..10])
     page.should have_content(milestone.expires_at)
     page.should have_content("Browse Issues")
   end
 
   And 'project "Shop" has milestone "v2.2"' do
-    project = Project.find_by_name("Shop")
+    project = Project.find_by(name: "Shop")
     milestone = create(:milestone, title: "v2.2", project: project)
 
     3.times { create(:issue, project: project, milestone: milestone) }
   end
 
   Given 'the milestone has open and closed issues' do
-    project = Project.find_by_name("Shop")
-    milestone = project.milestones.find_by_title('v2.2')
+    project = Project.find_by(name: "Shop")
+    milestone = project.milestones.find_by(title: 'v2.2')
 
     # 3 Open issues created above; create one closed issue
     create(:closed_issue, project: project, milestone: milestone)
diff --git a/features/steps/project/project_network_graph.rb b/features/steps/project/project_network_graph.rb
index bc228e6e68a73ce581ed6653f04e7621dcdf911f..c7d9ece6feb82b1d4d25c7bd44e4ecbca634b937 100644
--- a/features/steps/project/project_network_graph.rb
+++ b/features/steps/project/project_network_graph.rb
@@ -10,7 +10,7 @@ class ProjectNetworkGraph < Spinach::FeatureSteps
     # Stub Graph max_size to speed up test (10 commits vs. 650)
     Network::Graph.stub(max_count: 10)
 
-    project = Project.find_by_name("Shop")
+    project = Project.find_by(name: "Shop")
     visit project_network_path(project, "master")
   end
 
diff --git a/features/steps/project/project_snippets.rb b/features/steps/project/project_snippets.rb
index 82ff895970e868052c631890fa8dabe570130dd8..c3a76bea269e9e8c20cf2250e198c8ee875155c8 100644
--- a/features/steps/project/project_snippets.rb
+++ b/features/steps/project/project_snippets.rb
@@ -90,10 +90,10 @@ class ProjectSnippets < Spinach::FeatureSteps
   end
 
   def project
-    @project ||= Project.find_by_name!("Shop")
+    @project ||= Project.find_by!(name: "Shop")
   end
 
   def project_snippet
-    @project_snippet ||= ProjectSnippet.find_by_title!("Snippet One")
+    @project_snippet ||= ProjectSnippet.find_by!(title: "Snippet one")
   end
 end
diff --git a/features/steps/project/project_team_management.rb b/features/steps/project/project_team_management.rb
index efebba1be248598f7b84d6a7fa7fd91e141db3eb..cde06cadda329229f8f5a8476dcf82407993a757 100644
--- a/features/steps/project/project_team_management.rb
+++ b/features/steps/project/project_team_management.rb
@@ -10,7 +10,7 @@ class ProjectTeamManagement < Spinach::FeatureSteps
   end
 
   And 'I should see "Sam" in team list' do
-    user = User.find_by_name("Sam")
+    user = User.find_by(name: "Sam")
     page.should have_content(user.name)
     page.should have_content(user.username)
   end
@@ -20,7 +20,7 @@ class ProjectTeamManagement < Spinach::FeatureSteps
   end
 
   And 'I select "Mike" as "Reporter"' do
-    user = User.find_by_name("Mike")
+    user = User.find_by(name: "Mike")
 
     select2(user.id, from: "#user_ids", multiple: true)
     within "#new_team_member" do
@@ -42,7 +42,7 @@ class ProjectTeamManagement < Spinach::FeatureSteps
   end
 
   And 'I change "Sam" role to "Reporter"' do
-    user = User.find_by_name("Sam")
+    user = User.find_by(name: "Sam")
     within "#user_#{user.id}" do
       select "Reporter", from: "team_member_project_access"
     end
@@ -59,7 +59,7 @@ class ProjectTeamManagement < Spinach::FeatureSteps
   end
 
   And 'I should not see "Sam" in team list' do
-    user = User.find_by_name("Sam")
+    user = User.find_by(name: "Sam")
     page.should_not have_content(user.name)
     page.should_not have_content(user.username)
   end
@@ -73,8 +73,8 @@ class ProjectTeamManagement < Spinach::FeatureSteps
   end
 
   And '"Sam" is "Shop" developer' do
-    user = User.find_by_name("Sam")
-    project = Project.find_by_name("Shop")
+    user = User.find_by(name: "Sam")
+    project = Project.find_by(name: "Shop")
     project.team << [user, :developer]
   end
 
@@ -84,8 +84,8 @@ class ProjectTeamManagement < Spinach::FeatureSteps
   end
 
   And '"Mike" is "Website" reporter' do
-    user = User.find_by_name("Mike")
-    project = Project.find_by_name("Website")
+    user = User.find_by(name: "Mike")
+    project = Project.find_by(name: "Website")
     project.team << [user, :reporter]
   end
 
@@ -94,13 +94,13 @@ class ProjectTeamManagement < Spinach::FeatureSteps
   end
 
   When 'I submit "Website" project for import team' do
-    project = Project.find_by_name("Website")
+    project = Project.find_by(name: "Website")
     select project.name_with_namespace, from: 'source_project_id'
     click_button 'Import'
   end
 
   step 'I click cancel link for "Sam"' do
-    within "#user_#{User.find_by_name('Sam').id}" do
+    within "#user_#{User.find_by(name: 'Sam').id}" do
       click_link('Remove user from team')
     end
   end
diff --git a/features/steps/project/redirects.rb b/features/steps/project/redirects.rb
index 4ac53075704281407fa200f82a351d8449a6e0ef..896f7180f953e35f61e3abf378f729400d580ac3 100644
--- a/features/steps/project/redirects.rb
+++ b/features/steps/project/redirects.rb
@@ -12,7 +12,7 @@ class Spinach::Features::ProjectRedirects < Spinach::FeatureSteps
   end
 
   step 'I visit project "Community" page' do
-    project = Project.find_by_name('Community')
+    project = Project.find_by(name: 'Community')
     visit project_path(project)
   end
 
@@ -23,12 +23,12 @@ class Spinach::Features::ProjectRedirects < Spinach::FeatureSteps
   end
 
   step 'I visit project "Enterprise" page' do
-    project = Project.find_by_name('Enterprise')
+    project = Project.find_by(name: 'Enterprise')
     visit project_path(project)
   end
 
   step 'I visit project "CommunityDoesNotExist" page' do
-    project = Project.find_by_name('Community')
+    project = Project.find_by(name: 'Community')
     visit project_path(project) + 'DoesNotExist'
   end
 end
diff --git a/features/steps/public/projects_feature.rb b/features/steps/public/projects_feature.rb
index 47e52f47d07b6d7de0c9aa2140c636dcb7fc0a80..49db9b316be1dbe88d9e074394912321adcee00d 100644
--- a/features/steps/public/projects_feature.rb
+++ b/features/steps/public/projects_feature.rb
@@ -33,12 +33,12 @@ class Spinach::Features::PublicProjectsFeature < Spinach::FeatureSteps
   end
 
   step 'I visit empty project page' do
-    project = Project.find_by_name('Empty Public Project')
+    project = Project.find_by(name: 'Empty Public Project')
     visit project_path(project)
   end
 
   step 'I visit project "Community" page' do
-    project = Project.find_by_name('Community')
+    project = Project.find_by(name: 'Community')
     visit project_path(project)
   end
 
@@ -47,14 +47,14 @@ class Spinach::Features::PublicProjectsFeature < Spinach::FeatureSteps
   end
 
   step 'I should see empty public project details with http clone info' do
-    project = Project.find_by_name('Empty Public Project')
+    project = Project.find_by(name: 'Empty Public Project')
     page.all(:css, '.git-empty .clone').each do |element|
       element.text.should include(project.http_url_to_repo)
     end
   end
 
   step 'I should see empty public project details with ssh clone info' do
-    project = Project.find_by_name('Empty Public Project')
+    project = Project.find_by(name: 'Empty Public Project')
     page.all(:css, '.git-empty .clone').each do |element|
       element.text.should include(project.url_to_repo)
     end
@@ -65,7 +65,7 @@ class Spinach::Features::PublicProjectsFeature < Spinach::FeatureSteps
   end
 
   step 'I visit project "Enterprise" page' do
-    project = Project.find_by_name('Enterprise')
+    project = Project.find_by(name: 'Enterprise')
     visit project_path(project)
   end
 
@@ -88,7 +88,7 @@ class Spinach::Features::PublicProjectsFeature < Spinach::FeatureSteps
   end
 
   step 'I visit project "Internal" page' do
-    project = Project.find_by_name('Internal')
+    project = Project.find_by(name: 'Internal')
     visit project_path(project)
   end
 
@@ -99,12 +99,12 @@ class Spinach::Features::PublicProjectsFeature < Spinach::FeatureSteps
   end
 
   step 'I should see an http link to the repository' do
-    project = Project.find_by_name 'Community'
+    project = Project.find_by(name: 'Community')
     page.should have_field('project_clone', with: project.http_url_to_repo)
   end
 
   step 'I should see an ssh link to the repository' do
-    project = Project.find_by_name 'Community'
+    project = Project.find_by(name: 'Community')
     page.should have_field('project_clone', with: project.url_to_repo)
   end
 end
diff --git a/features/steps/shared/paths.rb b/features/steps/shared/paths.rb
index 987cd3120c9fa65235f05a9a76fd79bbad4d06de..d287121bb8477c8a8ca30bfa420141d9a5edddd4 100644
--- a/features/steps/shared/paths.rb
+++ b/features/steps/shared/paths.rb
@@ -241,7 +241,7 @@ module SharedPaths
   end
 
   step 'I visit issue page "Release 0.4"' do
-    issue = Issue.find_by_title("Release 0.4")
+    issue = Issue.find_by(title: "Release 0.4")
     visit project_issue_path(issue.project, issue)
   end
 
@@ -250,12 +250,12 @@ module SharedPaths
   end
 
   step 'I visit merge request page "Bug NS-04"' do
-    mr = MergeRequest.find_by_title("Bug NS-04")
+    mr = MergeRequest.find_by(title: "Bug NS-04")
     visit project_merge_request_path(mr.target_project, mr)
   end
 
   step 'I visit merge request page "Bug NS-05"' do
-    mr = MergeRequest.find_by_title("Bug NS-05")
+    mr = MergeRequest.find_by(title: "Bug NS-05")
     visit project_merge_request_path(mr.target_project, mr)
   end
 
@@ -292,7 +292,7 @@ module SharedPaths
   end
 
   step 'I visit public page for "Community" project' do
-    visit public_project_path(Project.find_by_name("Community"))
+    visit public_project_path(Project.find_by(name: "Community"))
   end
 
   # ----------------------------------------
@@ -316,6 +316,6 @@ module SharedPaths
   end
 
   def project
-    project = Project.find_by_name!("Shop")
+    project = Project.find_by!(name: "Shop")
   end
 end
diff --git a/features/steps/shared/project.rb b/features/steps/shared/project.rb
index 3dc4932a09a496c105d3a86d6cd73dac2d1ad741..00c289c23299f5b3a07efb7136b7efc8ec8dce49 100644
--- a/features/steps/shared/project.rb
+++ b/features/steps/shared/project.rb
@@ -9,20 +9,20 @@ module SharedProject
 
   # Create a specific project called "Shop"
   And 'I own project "Shop"' do
-    @project = Project.find_by_name "Shop"
+    @project = Project.find_by(name: "Shop")
     @project ||= create(:project_with_code, name: "Shop", namespace: @user.namespace)
     @project.team << [@user, :master]
   end
 
   # Create another specific project called "Forum"
   And 'I own project "Forum"' do
-    @project = Project.find_by_name "Forum"
+    @project = Project.find_by(name: "Forum")
     @project ||= create(:project_with_code, name: "Forum", namespace: @user.namespace, path: 'forum_project')
     @project.team << [@user, :master]
   end
 
   And 'project "Shop" has push event' do
-    @project = Project.find_by_name("Shop")
+    @project = Project.find_by(name: "Shop")
 
     data = {
       before: "0000000000000000000000000000000000000000",
@@ -48,7 +48,7 @@ module SharedProject
   end
 
   Then 'I should see project "Shop" activity feed' do
-    project = Project.find_by_name("Shop")
+    project = Project.find_by(name: "Shop")
     page.should have_content "#{@user.name} pushed new branch new_design at #{project.name_with_namespace}"
   end
 
diff --git a/features/steps/snippets/discover_snippets.rb b/features/steps/snippets/discover_snippets.rb
index 3afe019adf6db24795b0b73c23445613a0eae59d..09337937002a27c0fef80d71e6a6258c42300283 100644
--- a/features/steps/snippets/discover_snippets.rb
+++ b/features/steps/snippets/discover_snippets.rb
@@ -12,6 +12,6 @@ class DiscoverSnippets < Spinach::FeatureSteps
   end
 
   def snippet
-    @snippet ||= PersonalSnippet.find_by_title!("Personal snippet one")
+    @snippet ||= PersonalSnippet.find_by!(title: "Personal snippet one")
   end
 end
diff --git a/features/steps/snippets/snippets.rb b/features/steps/snippets/snippets.rb
index 1aea01f6cdf71317de8f0e550607c8ef92432fa9..fed54659ebca3281fa2b827c36f00e9787cc5aae 100644
--- a/features/steps/snippets/snippets.rb
+++ b/features/steps/snippets/snippets.rb
@@ -59,6 +59,6 @@ class SnippetsFeature < Spinach::FeatureSteps
   end
 
   def snippet
-    @snippet ||= PersonalSnippet.find_by_title!("Personal snippet one")
+    @snippet ||= PersonalSnippet.find_by!(title: "Personal snippet one")
   end
 end
diff --git a/features/steps/snippets/user_snippets.rb b/features/steps/snippets/user_snippets.rb
index 15d6da6db3d438172e453751b4e872301358140b..2d7ffc866e7b4b91beaac703a6a1f4db3fcbaff1 100644
--- a/features/steps/snippets/user_snippets.rb
+++ b/features/steps/snippets/user_snippets.rb
@@ -36,6 +36,6 @@ class UserSnippets < Spinach::FeatureSteps
   end
 
   def snippet
-    @snippet ||= PersonalSnippet.find_by_title!("Personal snippet one")
+    @snippet ||= PersonalSnippet.find_by!(title: "Personal snippet one")
   end
 end
diff --git a/lib/api/deploy_keys.rb b/lib/api/deploy_keys.rb
index b59976089978275777ef152b984f86fccc63222e..7f5a125038cdb1bf5bb76c0e75dc9b17c26bced3 100644
--- a/lib/api/deploy_keys.rb
+++ b/lib/api/deploy_keys.rb
@@ -38,14 +38,14 @@ module API
           attrs[:key].strip!
 
           # check if key already exist in project
-          key = user_project.deploy_keys.find_by_key(attrs[:key])
+          key = user_project.deploy_keys.find_by(key: attrs[:key])
           if key
             present key, with: Entities::SSHKey
             return
           end
 
           # Check for available deploy keys in other projects
-          key = current_user.accessible_deploy_keys.find_by_key(attrs[:key])
+          key = current_user.accessible_deploy_keys.find_by(key: attrs[:key])
           if key
             user_project.deploy_keys << key
             present key, with: Entities::SSHKey
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index 8d2f38c4daa72532b385da4087e2ac84bca49c95..16df3446f4b28d59b71cafbb1d64468945900def 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -48,19 +48,19 @@ module API
 
     class ProjectMember < UserBasic
       expose :project_access, as: :access_level do |user, options|
-        options[:project].users_projects.find_by_user_id(user.id).project_access
+        options[:project].users_projects.find_by(user_id: user.id).project_access
       end
     end
 
     class TeamMember < UserBasic
       expose :permission, as: :access_level do |user, options|
-        options[:user_team].user_team_user_relationships.find_by_user_id(user.id).permission
+        options[:user_team].user_team_user_relationships.find_by(user_id: user.id).permission
       end
     end
 
     class TeamProject < Project
       expose :greatest_access, as: :greatest_access_level do |project, options|
-        options[:user_team].user_team_project_relationships.find_by_project_id(project.id).greatest_access
+        options[:user_team].user_team_project_relationships.find_by(project_id: project.id).greatest_access
       end
     end
 
@@ -74,7 +74,7 @@ module API
 
     class GroupMember < UserBasic
       expose :group_access, as: :access_level do |user, options|
-        options[:group].users_groups.find_by_user_id(user.id).group_access
+        options[:group].users_groups.find_by(user_id: user.id).group_access
       end
     end
 
diff --git a/lib/api/groups.rb b/lib/api/groups.rb
index 290b78d80177a973184080369407ebd6b0384af3..03f027706de409bda1f7d9e82afe4da60f406c04 100644
--- a/lib/api/groups.rb
+++ b/lib/api/groups.rb
@@ -121,11 +121,11 @@ module API
           render_api_error!("Wrong access level", 422)
         end
         group = find_group(params[:id])
-        if group.users_groups.find_by_user_id(params[:user_id])
+        if group.users_groups.find_by(user_id: params[:user_id])
           render_api_error!("Already exists", 409)
         end
         group.add_users([params[:user_id]], params[:access_level])
-        member = group.users_groups.find_by_user_id(params[:user_id])
+        member = group.users_groups.find_by(user_id: params[:user_id])
         present member.user, with: Entities::GroupMember, group: group
       end
 
@@ -139,7 +139,7 @@ module API
       #   DELETE /groups/:id/members/:user_id
       delete ":id/members/:user_id" do
         group = find_group(params[:id])
-        member =  group.users_groups.find_by_user_id(params[:user_id])
+        member =  group.users_groups.find_by(user_id: params[:user_id])
         if member.nil?
           render_api_error!("404 Not Found - user_id:#{params[:user_id]} not a member of group #{group.name}",404)
         else
diff --git a/lib/api/helpers.rb b/lib/api/helpers.rb
index b0f8d5a6da96714ea48661ef3c8a883e6e15f292..f8c48e2f3b2c4a258f924dc7b893688f7e4ea454 100644
--- a/lib/api/helpers.rb
+++ b/lib/api/helpers.rb
@@ -7,7 +7,7 @@ module API
 
     def current_user
       private_token = (params[PRIVATE_TOKEN_PARAM] || env[PRIVATE_TOKEN_HEADER]).to_s
-      @current_user ||= User.find_by_authentication_token(private_token)
+      @current_user ||= User.find_by(authentication_token: private_token)
       identifier = sudo_identifier()
 
       # If the sudo is the current user do nothing
@@ -47,7 +47,7 @@ module API
     end
 
     def find_project(id)
-      project = Project.find_by_id(id) || Project.find_with_namespace(id)
+      project = Project.find_by(id: id) || Project.find_with_namespace(id)
 
       if project && can?(current_user, :read_project, project)
         project
diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb
index 3f4bec895bf981f94260e4285b797dce17f31f1a..cbaf22f265d6111977d8ae70154846cb56b6fb68 100644
--- a/lib/api/merge_requests.rb
+++ b/lib/api/merge_requests.rb
@@ -81,7 +81,7 @@ module API
             merge_request.target_project = user_project
           else
             if target_matches_fork(target_project_id,user_project)
-              merge_request.target_project = Project.find_by_id(attrs[:target_project_id])
+              merge_request.target_project = Project.find_by(id: attrs[:target_project_id])
             else
               render_api_error!('(Bad Request) Specified target project that is not the source project, or the source fork of the project.', 400)
             end
diff --git a/lib/api/projects.rb b/lib/api/projects.rb
index a4c8f7fc87e941db4a6593d6d4aaa96812814452..888aa7e77d225db669d0d262dd6ae21d1da84ba7 100644
--- a/lib/api/projects.rb
+++ b/lib/api/projects.rb
@@ -266,7 +266,7 @@ module API
         authorize! :admin_project, user_project
         required_attributes! [:access_level]
 
-        team_member = user_project.users_projects.find_by_user_id(params[:user_id])
+        team_member = user_project.users_projects.find_by(user_id: params[:user_id])
         not_found!("User can not be found") if team_member.nil?
 
         if team_member.update_attributes(project_access: params[:access_level])
@@ -286,7 +286,7 @@ module API
       #   DELETE /projects/:id/members/:user_id
       delete ":id/members/:user_id" do
         authorize! :admin_project, user_project
-        team_member = user_project.users_projects.find_by_user_id(params[:user_id])
+        team_member = user_project.users_projects.find_by(user_id: params[:user_id])
         unless team_member.nil?
           team_member.destroy
         else
diff --git a/lib/api/repositories.rb b/lib/api/repositories.rb
index af958f06c6452d835dc544b69b9c102949552303..878929b8032d7cf48f6bc867ba7ba4f331618539 100644
--- a/lib/api/repositories.rb
+++ b/lib/api/repositories.rb
@@ -51,7 +51,7 @@ module API
 
         @branch = user_project.repository.find_branch(params[:branch])
         not_found! unless @branch
-        protected_branch = user_project.protected_branches.find_by_name(@branch.name)
+        protected_branch = user_project.protected_branches.find_by(name: @branch.name)
         user_project.protected_branches.create(name: @branch.name) unless protected_branch
 
         present @branch, with: Entities::RepoObject, project: user_project
@@ -69,7 +69,7 @@ module API
 
         @branch = user_project.repository.find_branch(params[:branch])
         not_found! unless @branch
-        protected_branch = user_project.protected_branches.find_by_name(@branch.name)
+        protected_branch = user_project.protected_branches.find_by(name: @branch.name)
         protected_branch.destroy if protected_branch
 
         present @branch, with: Entities::RepoObject, project: user_project
diff --git a/lib/api/users.rb b/lib/api/users.rb
index 475343a3edfebd1ba817021bc15d720a32ff8d1c..82290fe03bf70fdc21108ab392e904bf4a6b7539 100644
--- a/lib/api/users.rb
+++ b/lib/api/users.rb
@@ -117,7 +117,7 @@ module API
       #   DELETE /users/:id
       delete ":id" do
         authenticated_as_admin!
-        user = User.find_by_id(params[:id])
+        user = User.find_by(id: params[:id])
 
         if user
           user.destroy
diff --git a/lib/gitlab/auth.rb b/lib/gitlab/auth.rb
index 0f1962974771e494e42c754dbc7ef762dfd478b0..955abc1bedd66cab8ff838cad023d45c18aaf975 100644
--- a/lib/gitlab/auth.rb
+++ b/lib/gitlab/auth.rb
@@ -1,7 +1,7 @@
 module Gitlab
   class Auth
     def find(login, password)
-      user = User.find_by_email(login) || User.find_by_username(login)
+      user = User.find_by(email: login) || User.find_by(username: login)
 
       if user.nil? || user.ldap_user?
         # Second chance - try LDAP authentication
diff --git a/lib/gitlab/identifier.rb b/lib/gitlab/identifier.rb
index a1ff248a77fd78696ed3f86f6e5c540f67dba6a3..6e4de197eeb3b31bbe6ba44c143decea3b811eaf 100644
--- a/lib/gitlab/identifier.rb
+++ b/lib/gitlab/identifier.rb
@@ -6,17 +6,17 @@ module Gitlab
       if identifier.blank?
         # Local push from gitlab
         email = project.repository.commit(newrev).author_email rescue nil
-        User.find_by_email(email) if email
+        User.find_by(email: email) if email
 
       elsif identifier =~ /\Auser-\d+\Z/
         # git push over http
         user_id = identifier.gsub("user-", "")
-        User.find_by_id(user_id)
+        User.find_by(id: user_id)
 
       elsif identifier =~ /\Akey-\d+\Z/
         # git push over ssh
         key_id = identifier.gsub("key-", "")
-        Key.find_by_id(key_id).try(:user)
+        Key.find_by(id: key_id).try(:user)
       end
     end
   end
diff --git a/lib/gitlab/ldap/user.rb b/lib/gitlab/ldap/user.rb
index 59f0fa64a6acd234fc9236fcbf92de0c5eb8acff..fd36dda7d22a8b8a61538c0e36b4d95c9747e02b 100644
--- a/lib/gitlab/ldap/user.rb
+++ b/lib/gitlab/ldap/user.rb
@@ -44,13 +44,13 @@ module Gitlab
         end
 
         def find_user(email)
-          user = model.find_by_email(email)
+          user = model.find_by(email: email)
 
           # If no user found and allow_username_or_email_login is true
           # we look for user by extracting part of their email
           if !user && email && ldap_conf['allow_username_or_email_login']
             uname = email.partition('@').first
-            user = model.find_by_username(uname)
+            user = model.find_by(username: uname)
           end
 
           user
diff --git a/lib/tasks/gitlab/bulk_add_permission.rake b/lib/tasks/gitlab/bulk_add_permission.rake
index c270232edbac1f915c60c23c907b0d282e414776..612a9ba93a8218ec3e708d9216f366ba6e274bed 100644
--- a/lib/tasks/gitlab/bulk_add_permission.rake
+++ b/lib/tasks/gitlab/bulk_add_permission.rake
@@ -15,7 +15,7 @@ namespace :gitlab do
 
     desc "GITLAB | Add a specific user to all projects (as a developer)"
     task :user_to_projects, [:email] => :environment  do |t, args|
-      user = User.find_by_email args.email
+      user = User.find_by(email: args.email)
       project_ids = Project.pluck(:id)
       puts "Importing #{user.email} users into #{project_ids.size} projects"
       UsersProject.add_users_into_projects(project_ids, Array.wrap(user.id), UsersProject::DEVELOPER)
diff --git a/lib/tasks/gitlab/enable_namespaces.rake b/lib/tasks/gitlab/enable_namespaces.rake
index 927748c0fd5f8e0d43bd4abf599e7f3de47c3a83..201f34ab5463a5ae8be5c037d220b1db6c451405 100644
--- a/lib/tasks/gitlab/enable_namespaces.rake
+++ b/lib/tasks/gitlab/enable_namespaces.rake
@@ -43,13 +43,13 @@ namespace :gitlab do
     username.gsub!("+", ".")
 
     # return username if no matches
-    return username unless User.find_by_username(username)
+    return username unless User.find_by(username: username)
 
     # look for same username
     (1..10).each do |i|
       suffixed_username = "#{username}#{i}"
 
-      return suffixed_username unless User.find_by_username(suffixed_username)
+      return suffixed_username unless User.find_by(username: suffixed_username)
     end
   end
 
diff --git a/lib/tasks/gitlab/import.rake b/lib/tasks/gitlab/import.rake
index 83e941adcb18476a5efba5df44254cd38946544e..b7df6b13dff20bf11e93c30d702912a31e94f0b6 100644
--- a/lib/tasks/gitlab/import.rake
+++ b/lib/tasks/gitlab/import.rake
@@ -50,7 +50,7 @@ namespace :gitlab do
 
           # find group namespace
           if group_name
-            group = Group.find_by_path(group_name)
+            group = Group.find_by(path: group_name)
             # create group namespace
             if !group
               group = Group.new(:name => group_name)
diff --git a/spec/lib/gitlab/ldap/ldap_user_auth_spec.rb b/spec/lib/gitlab/ldap/ldap_user_auth_spec.rb
index b7d7bbaad2e5333cc84a5af4e735114163fc7c59..a0e74c49631165190b0e5fa426d09ddec1db91bf 100644
--- a/spec/lib/gitlab/ldap/ldap_user_auth_spec.rb
+++ b/spec/lib/gitlab/ldap/ldap_user_auth_spec.rb
@@ -25,7 +25,7 @@ describe Gitlab::LDAP do
     it "should update credentials by email if missing uid" do
       user = double('User')
       User.stub find_by_extern_uid_and_provider: nil
-      User.stub find_by_email: user
+      User.stub(:find_by).with(hash_including(email: anything())) { user }
       user.should_receive :update_attributes
       gl_auth.find_or_create(@auth)
     end
@@ -35,8 +35,8 @@ describe Gitlab::LDAP do
       value = Gitlab.config.ldap.allow_username_or_email_login
       Gitlab.config.ldap['allow_username_or_email_login'] = true
       User.stub find_by_extern_uid_and_provider: nil
-      User.stub find_by_email: nil
-      User.stub find_by_username: user
+      User.stub(:find_by).with(hash_including(email: anything())) { nil }
+      User.stub(:find_by).with(hash_including(username: anything())) { user }
       user.should_receive :update_attributes
       gl_auth.find_or_create(@auth)
       Gitlab.config.ldap['allow_username_or_email_login'] = value
@@ -47,8 +47,8 @@ describe Gitlab::LDAP do
       value = Gitlab.config.ldap.allow_username_or_email_login
       Gitlab.config.ldap['allow_username_or_email_login'] = false
       User.stub find_by_extern_uid_and_provider: nil
-      User.stub find_by_email: nil
-      User.stub find_by_username: user
+      User.stub(:find_by).with(hash_including(email: anything())) { nil }
+      User.stub(:find_by).with(hash_including(username: anything())) { user }
       user.should_not_receive :update_attributes
       gl_auth.find_or_create(@auth)
       Gitlab.config.ldap['allow_username_or_email_login'] = value
diff --git a/spec/requests/api/users_spec.rb b/spec/requests/api/users_spec.rb
index 4ef78b8e5d023d537691dd223b27dc7b23c3193f..c4be510200202350c2729aa006ac08c290e0f002 100644
--- a/spec/requests/api/users_spec.rb
+++ b/spec/requests/api/users_spec.rb
@@ -93,7 +93,7 @@ describe API::API do
       expect {
         post api("/users", admin), attr
       }.to change { User.count }.by(1)
-      user = User.find_by_username(attr[:username])
+      user = User.find_by(username: attr[:username])
       user.projects_limit.should == limit
       user.theme_id.should == Gitlab::Theme::MARS
       Gitlab.config.gitlab.unstub(:default_projects_limit)
diff --git a/spec/workers/post_receive_spec.rb b/spec/workers/post_receive_spec.rb
index 46e86dbe00aee86ddc83eb3c9313153feefc18c3..0850734f136acebe927e88079ac99f40e21bcd49 100644
--- a/spec/workers/post_receive_spec.rb
+++ b/spec/workers/post_receive_spec.rb
@@ -19,7 +19,7 @@ describe PostReceive do
     end
 
     it "does not run if the author is not in the project" do
-      Key.stub(find_by_id: nil)
+      Key.stub(:find_by).with(hash_including(id: anything())) { nil }
 
       project.should_not_receive(:execute_hooks)