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