Skip to content

Commit eb16ad9

Browse files
committed
only mock mysql / mysql2 error under adapter /mysql/ and make sure db:create works
... even when there's a failure under Rails < 4.0 (fixes #702)
1 parent b514956 commit eb16ad9

File tree

1 file changed

+21
-9
lines changed

1 file changed

+21
-9
lines changed

lib/arjdbc/tasks/databases3.rake

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,3 @@
1-
# NOTE: fake these for create_database(config)
2-
module Mysql
3-
Error = ActiveRecord::JDBCError unless const_defined?(:Error)
4-
end
5-
module Mysql2
6-
Error = ActiveRecord::JDBCError unless const_defined?(:Error)
7-
end
8-
91
module ArJdbc
102
module Tasks
113
class << self
@@ -53,7 +45,27 @@ namespace :db do
5345

5446
def create_database(config)
5547
case config['adapter']
56-
when /mysql|postgresql|sqlite/
48+
when /mysql2/
49+
unless defined? Mysql2::Error
50+
# NOTE: fake it for create_database(config)
51+
Object.const_set :Mysql2, Module.new
52+
Mysql2.const_set :Error, ActiveRecord::JDBCError
53+
ActiveRecord::JDBCError.class_eval do
54+
def error; self end # Mysql2::Error#error
55+
end
56+
end
57+
_rails_create_database adapt_jdbc_config(config)
58+
when /mysql/
59+
unless defined? Mysql::Error
60+
# NOTE: fake it for create_database(config)
61+
Object.const_set :Mysql, Module.new
62+
Mysql.const_set :Error, ActiveRecord::JDBCError
63+
ActiveRecord::JDBCError.class_eval do
64+
def error; self end # Mysql::Error#error
65+
end
66+
end
67+
_rails_create_database adapt_jdbc_config(config)
68+
when /postgresql|sqlite/
5769
_rails_create_database adapt_jdbc_config(config)
5870
else
5971
ArJdbc::Tasks.create(config)

0 commit comments

Comments
 (0)