From 447568d15f9ec2d47a15fc04aeb2cb507cd6a55c Mon Sep 17 00:00:00 2001
From: Robert Speicher <rspeicher@gmail.com>
Date: Mon, 15 Feb 2016 14:13:47 -0500
Subject: [PATCH] Fix undefined method `postgresql?` during migration

---
 lib/gitlab/database.rb           |  8 ++------
 spec/lib/gitlab/database_spec.rb | 32 ++++++++++++++++++++++++++++++++
 2 files changed, 34 insertions(+), 6 deletions(-)

diff --git a/lib/gitlab/database.rb b/lib/gitlab/database.rb
index 6ebb8027553..6f9da69983a 100644
--- a/lib/gitlab/database.rb
+++ b/lib/gitlab/database.rb
@@ -17,7 +17,7 @@ module Gitlab
     end
 
     def true_value
-      if self.class.postgresql?
+      if Gitlab::Database.postgresql?
         "'t'"
       else
         1
@@ -25,7 +25,7 @@ module Gitlab
     end
 
     def false_value
-      if self.class.postgresql?
+      if Gitlab::Database.postgresql?
         "'f'"
       else
         0
@@ -47,9 +47,5 @@ module Gitlab
         row.first
       end
     end
-
-    def connection
-      self.class.connection
-    end
   end
 end
diff --git a/spec/lib/gitlab/database_spec.rb b/spec/lib/gitlab/database_spec.rb
index bd8688fefa1..d0a447753b7 100644
--- a/spec/lib/gitlab/database_spec.rb
+++ b/spec/lib/gitlab/database_spec.rb
@@ -1,5 +1,9 @@
 require 'spec_helper'
 
+class MigrationTest
+  include Gitlab::Database
+end
+
 describe Gitlab::Database, lib: true do
   # These are just simple smoke tests to check if the methods work (regardless
   # of what they may return).
@@ -34,4 +38,32 @@ describe Gitlab::Database, lib: true do
       end
     end
   end
+
+  describe '#true_value' do
+    it 'returns correct value for PostgreSQL' do
+      expect(described_class).to receive(:postgresql?).and_return(true)
+
+      expect(MigrationTest.new.true_value).to eq "'t'"
+    end
+
+    it 'returns correct value for MySQL' do
+      expect(described_class).to receive(:postgresql?).and_return(false)
+
+      expect(MigrationTest.new.true_value).to eq 1
+    end
+  end
+
+  describe '#false_value' do
+    it 'returns correct value for PostgreSQL' do
+      expect(described_class).to receive(:postgresql?).and_return(true)
+
+      expect(MigrationTest.new.false_value).to eq "'f'"
+    end
+
+    it 'returns correct value for MySQL' do
+      expect(described_class).to receive(:postgresql?).and_return(false)
+
+      expect(MigrationTest.new.false_value).to eq 0
+    end
+  end
 end
-- 
GitLab