Title: [656] trunk/activerecord-jdbc: Allow configuration with usual Rails style, with common JDBC vendor URL patterns baked in

Diff

Modified: trunk/activerecord-jdbc/History.txt (655 => 656)


--- trunk/activerecord-jdbc/History.txt	2007-06-22 17:13:52 UTC (rev 655)
+++ trunk/activerecord-jdbc/History.txt	2007-06-22 23:30:34 UTC (rev 656)
@@ -1,3 +1,10 @@
+== 0.5
+
+- It is no longer necessary to specify :driver and :url configuration parameters for the mysql, 
+  postgresql, oracle, derby, hsqldb, and h2 adapters.  The previous configuration is still
+  valid and compatible, but for new applications, this makes it possible to use the exact same
+  database.yml configuration as Rails applications running under Matz Ruby.
+
 == 0.4
 
 - Release coincides with JRuby 1.0 release

Modified: trunk/activerecord-jdbc/Rakefile (655 => 656)


--- trunk/activerecord-jdbc/Rakefile	2007-06-22 17:13:52 UTC (rev 655)
+++ trunk/activerecord-jdbc/Rakefile	2007-06-22 23:30:34 UTC (rev 656)
@@ -40,7 +40,7 @@
 desc "Run AR-JDBC tests"
 if RUBY_PLATFORM =~ /java/
   # TODO: add more databases into the standard tests here.
-  task :test => [:test_mysql, :test_derby, :test_hsqldb]
+  task :test => [:test_mysql, :test_jdbc, :test_derby, :test_hsqldb]
 else
   task :test => [:test_mysql]
 end
@@ -50,6 +50,11 @@
   t.libs << 'test'
 end
 
+Rake::TestTask.new(:test_jdbc) do |t|
+  t.test_files = FileList['test/generic_jdbc_connection_test.rb']
+  t.libs << 'test'
+end
+
 Rake::TestTask.new(:test_hsqldb) do |t|
   t.test_files = FileList['test/hsqldb_simple_test.rb']
   t.libs << 'test'
@@ -84,7 +89,7 @@
 
 begin
   require 'hoe'
-  Hoe.new("ActiveRecord-JDBC", "0.4") do |p|
+  Hoe.new("ActiveRecord-JDBC", "0.5") do |p|
     p.rubyforge_name = "jruby-extras"
     p.url = ""
     p.author = "Nick Sieger, Ola Bini and JRuby contributors"

Added: trunk/activerecord-jdbc/lib/active_record/connection_adapters/derby_adapter.rb (0 => 656)


--- trunk/activerecord-jdbc/lib/active_record/connection_adapters/derby_adapter.rb	                        (rev 0)
+++ trunk/activerecord-jdbc/lib/active_record/connection_adapters/derby_adapter.rb	2007-06-22 23:30:34 UTC (rev 656)
@@ -0,0 +1 @@
+require 'active_record/connection_adapters/jdbc_adapter'
\ No newline at end of file

Added: trunk/activerecord-jdbc/lib/active_record/connection_adapters/h2_adapter.rb (0 => 656)


--- trunk/activerecord-jdbc/lib/active_record/connection_adapters/h2_adapter.rb	                        (rev 0)
+++ trunk/activerecord-jdbc/lib/active_record/connection_adapters/h2_adapter.rb	2007-06-22 23:30:34 UTC (rev 656)
@@ -0,0 +1 @@
+require 'active_record/connection_adapters/jdbc_adapter'
\ No newline at end of file

Added: trunk/activerecord-jdbc/lib/active_record/connection_adapters/hsqldb_adapter.rb (0 => 656)


--- trunk/activerecord-jdbc/lib/active_record/connection_adapters/hsqldb_adapter.rb	                        (rev 0)
+++ trunk/activerecord-jdbc/lib/active_record/connection_adapters/hsqldb_adapter.rb	2007-06-22 23:30:34 UTC (rev 656)
@@ -0,0 +1 @@
+require 'active_record/connection_adapters/jdbc_adapter'
\ No newline at end of file

Modified: trunk/activerecord-jdbc/lib/active_record/connection_adapters/jdbc_adapter.rb (655 => 656)


--- trunk/activerecord-jdbc/lib/active_record/connection_adapters/jdbc_adapter.rb	2007-06-22 17:13:52 UTC (rev 655)
+++ trunk/activerecord-jdbc/lib/active_record/connection_adapters/jdbc_adapter.rb	2007-06-22 23:30:34 UTC (rev 656)
@@ -37,9 +37,54 @@
 
 module ActiveRecord
   class Base
-    def self.jdbc_connection(config)
-      connection = ConnectionAdapters::JdbcConnection.new(config)
-      ConnectionAdapters::JdbcAdapter.new(connection, logger, config)
+    class << self
+      def jdbc_connection(config)
+        connection = ConnectionAdapters::JdbcConnection.new(config)
+        ConnectionAdapters::JdbcAdapter.new(connection, logger, config)
+      end
+      alias jndi_connection jdbc_connection
+
+      def mysql_connection(config)
+        config[:url] ||= "jdbc:mysql://#{config[:host]}/#{config[:database]}"
+        config[:driver] = "com.mysql.jdbc.Driver"
+        jdbc_connection(config)
+      end
+
+      def postgresql_connection(config)
+        config[:url] ||= "jdbc:postgresql://#{config[:host]}/#{config[:database]}"
+        config[:driver] ||= "org.postgresql.Driver"
+        jdbc_connection(config)
+      end
+
+      def oracle_connection(config)
+        config[:url] ||= "jdbc:oracle:thin:@#{config[:host]}:#{config[:database]}"
+        config[:driver] ||= "oracle.jdbc.driver.OracleDriver"
+        jdbc_connection(config)
+      end
+      
+      def embedded_driver(config)
+        config[:username] ||= "sa"
+        config[:password] ||= ""
+        jdbc_connection(config)
+      end
+
+      def derby_connection(config)
+        config[:url] ||= "jdbc:derby:#{config[:database]};create=true"
+        config[:driver] ||= "org.apache.derby.jdbc.EmbeddedDriver"
+        embedded_driver(config)
+      end
+      
+      def hsqldb_connection(config)
+        config[:url] ||= "jdbc:hsqldb:#{config[:database]}"
+        config[:driver] ||= "org.hsqldb.jdbcDriver"
+        embedded_driver(config)
+      end
+      
+      def h2_connection(config)
+        config[:url] ||= "jdbc:h2:#{config[:database]}"
+        config[:driver] ||= "org.h2.Driver"
+        embedded_driver(config)
+      end
     end
 
     alias :attributes_with_quotes_pre_oracle :attributes_with_quotes
@@ -341,6 +386,8 @@
     end
 
     class JdbcAdapter < AbstractAdapter
+      attr_reader :config
+
       ADAPTER_TYPES = {
         /oracle/i => lambda{|cfg,adapt| adapt.extend(::JdbcSpec::Oracle)},
         /mimer/i => lambda{|cfg,adapt| adapt.extend(::JdbcSpec::Mimer)},

Added: trunk/activerecord-jdbc/lib/active_record/connection_adapters/jndi_adapter.rb (0 => 656)


--- trunk/activerecord-jdbc/lib/active_record/connection_adapters/jndi_adapter.rb	                        (rev 0)
+++ trunk/activerecord-jdbc/lib/active_record/connection_adapters/jndi_adapter.rb	2007-06-22 23:30:34 UTC (rev 656)
@@ -0,0 +1 @@
+require 'active_record/connection_adapters/jdbc_adapter'
\ No newline at end of file

Added: trunk/activerecord-jdbc/lib/active_record/connection_adapters/mysql_adapter.rb (0 => 656)


--- trunk/activerecord-jdbc/lib/active_record/connection_adapters/mysql_adapter.rb	                        (rev 0)
+++ trunk/activerecord-jdbc/lib/active_record/connection_adapters/mysql_adapter.rb	2007-06-22 23:30:34 UTC (rev 656)
@@ -0,0 +1 @@
+require 'active_record/connection_adapters/jdbc_adapter'

Added: trunk/activerecord-jdbc/lib/active_record/connection_adapters/oracle_adapter.rb (0 => 656)


--- trunk/activerecord-jdbc/lib/active_record/connection_adapters/oracle_adapter.rb	                        (rev 0)
+++ trunk/activerecord-jdbc/lib/active_record/connection_adapters/oracle_adapter.rb	2007-06-22 23:30:34 UTC (rev 656)
@@ -0,0 +1 @@
+require 'active_record/connection_adapters/jdbc_adapter'
\ No newline at end of file

Added: trunk/activerecord-jdbc/lib/active_record/connection_adapters/postgresql_adapter.rb (0 => 656)


--- trunk/activerecord-jdbc/lib/active_record/connection_adapters/postgresql_adapter.rb	                        (rev 0)
+++ trunk/activerecord-jdbc/lib/active_record/connection_adapters/postgresql_adapter.rb	2007-06-22 23:30:34 UTC (rev 656)
@@ -0,0 +1 @@
+require 'active_record/connection_adapters/jdbc_adapter'
\ No newline at end of file

Modified: trunk/activerecord-jdbc/pom.xml (655 => 656)


--- trunk/activerecord-jdbc/pom.xml	2007-06-22 17:13:52 UTC (rev 655)
+++ trunk/activerecord-jdbc/pom.xml	2007-06-22 23:30:34 UTC (rev 656)
@@ -10,7 +10,7 @@
   <groupId>org.jruby.testsuites</groupId>
   <artifactId>activerecord-jdbc</artifactId>
   <packaging>jar</packaging>
-  <version>1.0</version>
+  <version>1.1-SNAPSHOT</version>
   <name>JRuby ActiveRecord-JDBC testsuite</name>
   <description>Test ActiveRecord-JDBC</description>
 
@@ -18,7 +18,7 @@
     <dependency>
       <groupId>org.jruby</groupId>
       <artifactId>jruby</artifactId>
-      <version>1.0</version>
+      <version>1.1-SNAPSHOT</version>
     </dependency>
   </dependencies>
 

Modified: trunk/activerecord-jdbc/test/db/derby.rb (655 => 656)


--- trunk/activerecord-jdbc/test/db/derby.rb	2007-06-22 17:13:52 UTC (rev 655)
+++ trunk/activerecord-jdbc/test/db/derby.rb	2007-06-22 23:30:34 UTC (rev 656)
@@ -1,11 +1,8 @@
 require 'logger'
 
 config = {
-  :adapter => 'jdbc',
-  :username => 'sa',
-  :password => '',
-  :driver => 'org.apache.derby.jdbc.EmbeddedDriver',
-  :url ="" 'jdbc:derby:derby-testdb;create=true'
+  :adapter => 'derby',
+  :database => "derby-testdb"
 }
 
 ActiveRecord::Base.establish_connection(config)

Modified: trunk/activerecord-jdbc/test/db/h2.rb (655 => 656)


--- trunk/activerecord-jdbc/test/db/h2.rb	2007-06-22 17:13:52 UTC (rev 655)
+++ trunk/activerecord-jdbc/test/db/h2.rb	2007-06-22 23:30:34 UTC (rev 656)
@@ -1,9 +1,6 @@
 config = {
-  :adapter => 'jdbc',
-  :username => 'sa',
-  :password => '',
-  :driver => 'org.h2.Driver',
-  :url ="" 'jdbc:h2:test.db'
+  :adapter => 'h2',
+  :database => 'test.db'
 }
 
 ActiveRecord::Base.establish_connection(config)

Modified: trunk/activerecord-jdbc/test/db/hsqldb.rb (655 => 656)


--- trunk/activerecord-jdbc/test/db/hsqldb.rb	2007-06-22 17:13:52 UTC (rev 655)
+++ trunk/activerecord-jdbc/test/db/hsqldb.rb	2007-06-22 23:30:34 UTC (rev 656)
@@ -1,10 +1,6 @@
 config = {
-  :adapter => 'jdbc',
-  :username => 'sa',
-  :password => '',
-  :driver => 'org.hsqldb.jdbcDriver',
-  :url ="" 'jdbc:hsqldb:test.db'
-  #:url ="" 'jdbc:hsqldb:mem:test'
+  :adapter => 'hsqldb',
+  :database => 'test.db'
 }
 
 ActiveRecord::Base.establish_connection(config)

Added: trunk/activerecord-jdbc/test/db/jdbc.rb (0 => 656)


--- trunk/activerecord-jdbc/test/db/jdbc.rb	                        (rev 0)
+++ trunk/activerecord-jdbc/test/db/jdbc.rb	2007-06-22 23:30:34 UTC (rev 656)
@@ -0,0 +1,9 @@
+config = {
+  :username => 'blog',
+  :password => '',
+  :adapter  => 'jdbc',
+  :driver   => 'com.mysql.jdbc.Driver',
+  :url      ="" 'jdbc:mysql://localhost:3306/weblog_development'
+}
+
+ActiveRecord::Base.establish_connection(config)

Modified: trunk/activerecord-jdbc/test/db/mysql.rb (655 => 656)


--- trunk/activerecord-jdbc/test/db/mysql.rb	2007-06-22 17:13:52 UTC (rev 655)
+++ trunk/activerecord-jdbc/test/db/mysql.rb	2007-06-22 23:30:34 UTC (rev 656)
@@ -1,20 +1,9 @@
 config = {
   :username => 'blog',
-  :password => ''
+  :password => '',
+  :adapter  => 'mysql',
+  :database => 'weblog_development',
+  :host     => 'localhost'
 }
 
-if RUBY_PLATFORM =~ /java/
-  config.update({
-    :adapter  => 'jdbc',
-    :driver   => 'com.mysql.jdbc.Driver',
-    :url      ="" 'jdbc:mysql://localhost:3306/weblog_development',
-  })
-else
-  config.update({
-    :adapter  => 'mysql',
-    :database => 'weblog_development',
-    :host     => 'localhost'
-  })
-end
-
 ActiveRecord::Base.establish_connection(config)

Modified: trunk/activerecord-jdbc/test/db/postgres.rb (655 => 656)


--- trunk/activerecord-jdbc/test/db/postgres.rb	2007-06-22 17:13:52 UTC (rev 655)
+++ trunk/activerecord-jdbc/test/db/postgres.rb	2007-06-22 23:30:34 UTC (rev 656)
@@ -1,8 +1,6 @@
 config = { 
-  :adapter => 'jdbc',
+  :adapter => 'postgresql',
   :database => 'weblog_development',
-  :url ="" 'jdbc:postgresql://localhost/weblog_development',
-  :driver => 'org.postgresql.Driver',
   :username => 'blog',
   :password => ''
 }

Added: trunk/activerecord-jdbc/test/generic_jdbc_connection_test.rb (0 => 656)


--- trunk/activerecord-jdbc/test/generic_jdbc_connection_test.rb	                        (rev 0)
+++ trunk/activerecord-jdbc/test/generic_jdbc_connection_test.rb	2007-06-22 23:30:34 UTC (rev 656)
@@ -0,0 +1,9 @@
+require 'jdbc_common'
+require 'db/jdbc'
+
+class GenericJdbcConnectionTest < Test::Unit::TestCase
+  def test_connection_available_through_jdbc_adapter
+    ActiveRecord::Base.connection.execute("show databases");
+    assert ActiveRecord::Base.connected?
+  end
+end
\ No newline at end of file

Modified: trunk/activerecord-jdbc/test/simple.rb (655 => 656)


--- trunk/activerecord-jdbc/test/simple.rb	2007-06-22 17:13:52 UTC (rev 655)
+++ trunk/activerecord-jdbc/test/simple.rb	2007-06-22 23:30:34 UTC (rev 656)
@@ -115,16 +115,12 @@
 
 end
 
-class ActiveRecord::Base
-  cattr_accessor :defined_connections
-end
-
 module MultibyteTestMethods
   include MigrationSetup
 
   def setup
     super
-    config = ActiveRecord::Base.defined_connections["ActiveRecord::Base"].config
+    config = ActiveRecord::Base.connection.config
     props = java.util.Properties.new
     props.setProperty("user", config[:username])
     props.setProperty("password", config[:password])
_______________________________________________
Jruby-extras-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/jruby-extras-devel

Reply via email to