From 9f523539ad96d1c1a3bb9e19d2a16e1db177f70b Mon Sep 17 00:00:00 2001 From: Krekoten' Marjan Date: Sun, 19 Sep 2010 22:57:44 +0300 Subject: [PATCH] Ensure that mysql2 gem with mysql gem compatibility used. Fix uninitialized constant Mysql2 [#5502 state:resolved] --- Gemfile | 2 +- .../lib/active_record/railties/databases.rake | 2 +- .../rails/generators/rails/app/app_generator.rb | 6 ++++++ .../rails/generators/rails/app/templates/Gemfile | 2 +- railties/test/generators/app_generator_test.rb | 2 +- 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index d9f089f..9d29c42 100644 --- a/Gemfile +++ b/Gemfile @@ -45,7 +45,7 @@ platforms :ruby do group :db do gem "pg", ">= 0.9.0" gem "mysql", ">= 2.8.1" - gem "mysql2", ">= 0.2.3" + gem "mysql2", ">= 0.2.4" end end diff --git a/activerecord/lib/active_record/railties/databases.rake b/activerecord/lib/active_record/railties/databases.rake index 3c5981a..ba369a9 100644 --- a/activerecord/lib/active_record/railties/databases.rake +++ b/activerecord/lib/active_record/railties/databases.rake @@ -83,7 +83,7 @@ namespace :db do @charset = ENV['CHARSET'] || 'utf8' @collation = ENV['COLLATION'] || 'utf8_unicode_ci' creation_options = {:charset => (config['charset'] || @charset), :collation => (config['collation'] || @collation)} - error_class = config['adapter'] =~ /mysql2/ ? Mysql2::Error : Mysql::Error + error_class = "#{config['adapter'].capitalize}::Error".constantize access_denied_error = 1045 begin ActiveRecord::Base.establish_connection(config.merge('database' => nil)) diff --git a/railties/lib/rails/generators/rails/app/app_generator.rb b/railties/lib/rails/generators/rails/app/app_generator.rb index cdff174..6a586f6 100644 --- a/railties/lib/rails/generators/rails/app/app_generator.rb +++ b/railties/lib/rails/generators/rails/app/app_generator.rb @@ -401,6 +401,12 @@ module Rails else options[:database] end end + + def version_for_database + case options[:database] + when "mysql" then ">= 0.2.4" + end + end def require_for_database case options[:database] diff --git a/railties/lib/rails/generators/rails/app/templates/Gemfile b/railties/lib/rails/generators/rails/app/templates/Gemfile index d553c09..e2d7f23 100644 --- a/railties/lib/rails/generators/rails/app/templates/Gemfile +++ b/railties/lib/rails/generators/rails/app/templates/Gemfile @@ -14,7 +14,7 @@ gem 'rails', '<%= Rails::VERSION::STRING %>' <%- end -%> <% unless options[:skip_active_record] -%> -gem '<%= gem_for_database %>'<% if require_for_database %>, :require => '<%= require_for_database %>'<% end %> +gem '<%= gem_for_database %>'<%if version_for_database %>, '<%= version_for_database %>'<% end %><% if require_for_database %>, :require => '<%= require_for_database %>'<% end %> <% end -%> # Use unicorn as the web server diff --git a/railties/test/generators/app_generator_test.rb b/railties/test/generators/app_generator_test.rb index 9ce2308..34684cd 100644 --- a/railties/test/generators/app_generator_test.rb +++ b/railties/test/generators/app_generator_test.rb @@ -159,7 +159,7 @@ class AppGeneratorTest < Rails::Generators::TestCase def test_config_another_database run_generator([destination_root, "-d", "mysql"]) assert_file "config/database.yml", /mysql/ - assert_file "Gemfile", /^gem\s+["']mysql2["']$/ + assert_file "Gemfile", /^gem\s+["']mysql2["'],\s+["']>=\s+0\.2\.4["']$/ end def test_config_database_is_not_added_if_skip_active_record_is_given -- 1.7.2