From ba309a3e38297dfb79fa574555a1b8a003b04d1a Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 20 Feb 2005 21:47:09 +0000 Subject: [PATCH] Added options to specify an SSL connection for MySQL. Define the following attributes in the connection config (config/database.yml in Rails) to use it: sslkey, sslcert, sslca, sslcapath, sslcipher. To use SSL with no client certs, just set :sslca = /dev/null. http://dev.mysql.com/doc/mysql/en/secure-connections.html #604 [daniel@nightrunner.com] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@720 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- activerecord/CHANGELOG | 2 ++ .../active_record/connection_adapters/mysql_adapter.rb | 10 ++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/activerecord/CHANGELOG b/activerecord/CHANGELOG index dafc6a05e1..b4e60b14ce 100644 --- a/activerecord/CHANGELOG +++ b/activerecord/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Added options to specify an SSL connection for MySQL. Define the following attributes in the connection config (config/database.yml in Rails) to use it: sslkey, sslcert, sslca, sslcapath, sslcipher. To use SSL with no client certs, just set :sslca = '/dev/null'. http://dev.mysql.com/doc/mysql/en/secure-connections.html #604 [daniel@nightrunner.com] + * Added automatic dropping/creating of test tables for running the unit tests on all databases #587 [adelle@bullet.net.au] * Fixed that find_by_* would fail when column names had numbers #670 [demetrius] diff --git a/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb index c637a50c5a..ff71acffbd 100755 --- a/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb @@ -3,7 +3,7 @@ require 'parsedate' module ActiveRecord class Base - # Establishes a connection to the database that's used by all Active Record objects + # Establishes a connection to the database that's used by all Active Record objects. def self.mysql_connection(config) # :nodoc: unless self.class.const_defined?(:Mysql) begin @@ -19,7 +19,9 @@ module ActiveRecord end end end + symbolize_strings_in_hash(config) + host = config[:host] port = config[:port] socket = config[:socket] @@ -32,9 +34,9 @@ module ActiveRecord raise ArgumentError, "No database specified. Missing argument: database." end - ConnectionAdapters::MysqlAdapter.new( - Mysql::real_connect(host, username, password, database, port, socket), logger - ) + mysql = Mysql.init + mysql.ssl_set(config[:sslkey], config[:sslcert], config[:sslca], config[:sslcapath], config[:sslcipher]) if config[:sslkey] + ConnectionAdapters::MysqlAdapter.new(mysql.real_connect(host, username, password, database, port, socket), logger) end end