diff options
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/lib/active_record/tasks/database_tasks.rb | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/activerecord/lib/active_record/tasks/database_tasks.rb b/activerecord/lib/active_record/tasks/database_tasks.rb index 8e05c1a439..24fe4134e0 100644 --- a/activerecord/lib/active_record/tasks/database_tasks.rb +++ b/activerecord/lib/active_record/tasks/database_tasks.rb @@ -1,6 +1,7 @@ module ActiveRecord module Tasks # :nodoc: - class DatabaseTasks # :nodoc: + module DatabaseTasks # :nodoc: + extend self TASKS_PATTERNS = { /mysql/ => ActiveRecord::Tasks::MySQLDatabaseTasks, @@ -9,7 +10,7 @@ module ActiveRecord } LOCAL_HOSTS = ['127.0.0.1', 'localhost'] - def self.create(*arguments) + def create(*arguments) configuration = arguments.first class_for_adapter(configuration['adapter']).new(*arguments).create rescue Exception => error @@ -17,18 +18,18 @@ module ActiveRecord $stderr.puts "Couldn't create database for #{configuration.inspect}" end - def self.create_all + def create_all each_local_configuration { |configuration| create configuration } end - def self.create_current(environment = Rails.env) + def create_current(environment = Rails.env) each_current_configuration(environment) { |configuration| create configuration } ActiveRecord::Base.establish_connection environment end - def self.drop(*arguments) + def drop(*arguments) configuration = arguments.first class_for_adapter(configuration['adapter']).new(*arguments).drop rescue Exception => error @@ -36,28 +37,28 @@ module ActiveRecord $stderr.puts "Couldn't drop #{configuration['database']}" end - def self.drop_all + def drop_all each_local_configuration { |configuration| drop configuration } end - def self.drop_current(environment = Rails.env) + def drop_current(environment = Rails.env) each_current_configuration(environment) { |configuration| drop configuration } end - def self.purge(configuration) + def purge(configuration) class_for_adapter(configuration['adapter']).new(configuration).purge end private - def self.class_for_adapter(adapter) + def class_for_adapter(adapter) key = TASKS_PATTERNS.keys.detect { |pattern| adapter[pattern] } TASKS_PATTERNS[key] end - def self.each_current_configuration(environment) + def each_current_configuration(environment) environments = [environment] environments << 'test' if environment.development? @@ -67,7 +68,7 @@ module ActiveRecord end end - def self.each_local_configuration + def each_local_configuration ActiveRecord::Base.configurations.each_value do |configuration| next unless configuration['database'] @@ -79,9 +80,9 @@ module ActiveRecord end end - def self.local_database?(configuration) + def local_database?(configuration) configuration['host'].in?(LOCAL_HOSTS) || configuration['host'].blank? end end end -end
\ No newline at end of file +end |