Title: [941] trunk/activerecord-jdbc/lib/jdbc_adapter: More fixing of Rake task overriding
Revision
941
Author
nicksieger
Date
2008-03-16 18:47:16 -0400 (Sun, 16 Mar 2008)

Log Message

More fixing of Rake task overriding

Modified Paths


Added Paths

Diff

Added: trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc.rake (0 => 941)


--- trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc.rake	                        (rev 0)
+++ trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc.rake	2008-03-16 22:47:16 UTC (rev 941)
@@ -0,0 +1,78 @@
+def redefine_task(*args, &block)
+  task_name = Hash === args.first ? args.first.keys[0] : args.first
+  existing_task = Rake.application.lookup task_name
+  if existing_task
+    class << existing_task; public :instance_variable_set; end
+    existing_task.instance_variable_set "@prerequisites", FileList[]
+    existing_task.instance_variable_set "@actions", []
+  end
+  task(*args, &block)
+end
+
+namespace :db do
+  redefine_task :create => :environment do
+    jdbc_create_database(ActiveRecord::Base.configurations[RAILS_ENV])
+  end
+
+  class << self; alias_method :previous_create_database, :create_database; end
+  def create_database(config)
+    begin
+      ActiveRecord::Base.establish_connection(config)
+      ActiveRecord::Base.connection
+    rescue
+      begin
+        url = ""
+        if url
+          if url =~ /^(.*\/)/
+            url = ""
+          end
+        end
+
+        ActiveRecord::Base.establish_connection(config.merge({'database' => nil, 'url' => url}))
+        ActiveRecord::Base.connection.create_database(config['database'])
+        ActiveRecord::Base.establish_connection(config)
+      rescue
+        previous_create_database(config)
+      end
+    end
+  end
+
+  redefine_task :drop => :environment do
+    config = ActiveRecord::Base.configurations[RAILS_ENV]
+    begin
+      ActiveRecord::Base.establish_connection(config)
+      db = ActiveRecord::Base.connection.database_name
+      ActiveRecord::Base.connection.drop_database(db)
+    rescue
+      drop_database(config)
+    end
+  end
+
+  namespace :structure do
+    redefine_task :dump => :environment do
+      abcs = ActiveRecord::Base.configurations
+      ActiveRecord::Base.establish_connection(abcs[RAILS_ENV])
+      File.open("db/#{RAILS_ENV}_structure.sql", "w+") { |f| f << ActiveRecord::Base.connection.structure_dump }
+      if ActiveRecord::Base.connection.supports_migrations?
+        File.open("db/#{RAILS_ENV}_structure.sql", "a") { |f| f << ActiveRecord::Base.connection.dump_schema_information }
+      end
+    end
+  end
+  namespace :test do
+    redefine_task :clone_structure => [ "db:structure:dump", "db:test:purge" ] do
+      abcs = ActiveRecord::Base.configurations
+      ActiveRecord::Base.establish_connection(:test)
+      ActiveRecord::Base.connection.execute('SET foreign_key_checks = 0') if abcs["test"]["adapter"] =~ /mysql/i
+      IO.readlines("db/#{RAILS_ENV}_structure.sql").join.split(";\n\n").each do |ddl|
+        ActiveRecord::Base.connection.execute(ddl)
+      end
+    end
+
+    redefine_task :purge => :environment do
+      abcs = ActiveRecord::Base.configurations
+      ActiveRecord::Base.establish_connection(:test)
+      db = ActiveRecord::Base.connection.database_name
+      ActiveRecord::Base.connection.recreate_database(db)
+    end
+  end
+end

Modified: trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc_mysql.rb (940 => 941)


--- trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc_mysql.rb	2008-03-16 22:47:12 UTC (rev 940)
+++ trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc_mysql.rb	2008-03-16 22:47:16 UTC (rev 941)
@@ -6,9 +6,6 @@
 
   module ActiveRecordExtensions
     def mysql_connection(config)
-      if config[:socket]
-        warn "AR-JDBC MySQL on JRuby does not support sockets"
-      end
       config[:port] ||= 3306
       if config[:url]
         config[:url] = config[:url]['?'] ? "#{config[:url]}&#{MySQL::URL_OPTIONS}" : "#{config[:url]}?#{MySQL::URL_OPTIONS}"

Modified: trunk/activerecord-jdbc/lib/jdbc_adapter/rake_tasks.rb (940 => 941)


--- trunk/activerecord-jdbc/lib/jdbc_adapter/rake_tasks.rb	2008-03-16 22:47:12 UTC (rev 940)
+++ trunk/activerecord-jdbc/lib/jdbc_adapter/rake_tasks.rb	2008-03-16 22:47:16 UTC (rev 941)
@@ -1,79 +1,10 @@
-if defined?(namespace) && RUBY_PLATFORM =~ /java/ && ENV["SKIP_AR_JDBC_RAKE_REDEFINES"].nil?
-  def redefine_task(*args, &block)
-    task_name = Hash === args.first ? args.first.keys[0] : args.first
-    existing_task = Rake.application.lookup task_name
-    if existing_task
-      class << existing_task; public :instance_variable_set; end
-      existing_task.instance_variable_set "@prerequisites", FileList[]
-      existing_task.instance_variable_set "@actions", []
-    end
-    task(*args, &block)
+if defined?(Rake.application) && Rake.application && ENV["SKIP_AR_JDBC_RAKE_REDEFINES"].nil?
+  jdbc_rakefile = File.dirname(__FILE__) + "/jdbc.rake"
+  if Rake.application.lookup("environment")
+    # rails tasks already defined; load the override tasks now
+    load jdbc_rakefile
+  else
+    # rails tasks not loaded yet; load as an import
+    Rake.application.add_import(jdbc_rakefile)
   end
-
-  namespace :db do
-    redefine_task :create => :environment do
-      jdbc_create_database(ActiveRecord::Base.configurations[RAILS_ENV])
-    end
-
-    def jdbc_create_database(config)
-      begin
-        ActiveRecord::Base.establish_connection(config)
-        ActiveRecord::Base.connection
-      rescue
-        begin 
-          url = ""
-          if url
-            if url =~ /^(.*\/)/
-              url = ""
-            end
-          end
-
-          ActiveRecord::Base.establish_connection(config.merge({'database' => nil, 'url' => url}))
-          ActiveRecord::Base.connection.create_database(config['database'])
-          ActiveRecord::Base.establish_connection(config)
-        rescue
-          create_database(config)
-        end
-      end
-    end
-    
-    redefine_task :drop => :environment do
-      config = ActiveRecord::Base.configurations[RAILS_ENV]
-      begin
-        ActiveRecord::Base.establish_connection(config)
-        db = ActiveRecord::Base.connection.database_name
-        ActiveRecord::Base.connection.drop_database(db)
-      rescue
-        drop_database(config)
-      end
-    end
-
-    namespace :structure do
-      redefine_task :dump => :environment do
-        abcs = ActiveRecord::Base.configurations
-        ActiveRecord::Base.establish_connection(abcs[RAILS_ENV])
-        File.open("db/#{RAILS_ENV}_structure.sql", "w+") { |f| f << ActiveRecord::Base.connection.structure_dump }
-        if ActiveRecord::Base.connection.supports_migrations?
-          File.open("db/#{RAILS_ENV}_structure.sql", "a") { |f| f << ActiveRecord::Base.connection.dump_schema_information }
-        end
-      end
-    end
-    namespace :test do
-      redefine_task :clone_structure => [ "db:structure:dump", "db:test:purge" ] do
-        abcs = ActiveRecord::Base.configurations
-        ActiveRecord::Base.establish_connection(:test)
-        ActiveRecord::Base.connection.execute('SET foreign_key_checks = 0') if abcs["test"]["adapter"] =~ /mysql/i
-        IO.readlines("db/#{RAILS_ENV}_structure.sql").join.split(";\n\n").each do |ddl|
-          ActiveRecord::Base.connection.execute(ddl)
-        end
-      end
-
-      redefine_task :purge => :environment do
-        abcs = ActiveRecord::Base.configurations
-        ActiveRecord::Base.establish_connection(:test)
-        db = ActiveRecord::Base.connection.database_name
-        ActiveRecord::Base.connection.recreate_database(db)
-      end
-    end
-  end
 end
_______________________________________________
Jruby-extras-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/jruby-extras-devel

Reply via email to