lib/reflection/rails.rb in reflection-0.4.6 vs lib/reflection/rails.rb in reflection-0.5.0
- old
+ new
@@ -1,61 +1,39 @@
module Reflection
module Rails
+
+ autoload :Database, 'reflection/rails/database'
+
class << self
def validate_environment(config)
env_file_path = File.join(config.rails_root, 'config/environments', "#{config.rails_environment}.rb")
unless File.exist?(env_file_path)
Reflection::Support.exit_with_error("Rails environment '#{config.rails_environment}' doesn't exist in #{env_file_path}.")
end
end
- def clean_target(target_directory)
- target_file_path = File.join(target_directory.path, '_rails_database_dump.sql')
- if File.exist?(target_file_path)
- %x(rm #{target_file_path})
- end
+ # TODO:
+ # Method is obsolete and has moved to Rails::Database
+ # Cannot be removed atm because Command::Stash depends on it
+ def clean_target(config, target_directory)
+ database = Database.new(config.rails_root, config.rails_environment)
+ database.clean_dump_file(target_directory.path)
end
- def database_command_line_options(database_config)
- options = []
- options << "-h #{database_config['host']}"
- options << "-u#{database_config['username']}"
- options << "-p#{database_config['password']}" if database_config['password'] && !database_config['password'].empty?
- options << "#{database_config['database']}"
- options.join(' ')
- end
-
- def read_database_configuration(config)
- begin
- database_path = File.join(config.rails_root, "config/database.yml")
- if db_config = YAML.load_file(database_path)[config.rails_environment]
- return db_config
- else
- Reflection.log.error("Rails database configuration for '#{config.rails_environment}' isn't available in #{database_path}")
- return false
- end
- rescue => e
- Reflection.log.error("Error while parsing Rails database configuration: #{e}")
- return false
- end
- end
-
def stash(config, target_directory)
Reflection.log.debug "Stashing database dump.."
- return unless database_config = read_database_configuration(config)
- options = database_command_line_options(database_config)
- target_file_path = File.join(target_directory.path, '_rails_database_dump.sql')
- %x(mysqldump #{options} --add-drop-table > #{target_file_path})
+ database = Database.new(config.rails_root, config.rails_environment)
+ database.dump_to_directory(target_directory.path)
end
def apply(config, target_directory)
Reflection.log.debug "Applying database dump.."
- return unless database_config = read_database_configuration(config)
- options = database_command_line_options(database_config)
- target_file_path = File.join(target_directory.path, '_rails_database_dump.sql')
- %x(mysql #{options} < #{target_file_path})
- clean_target(target_directory)
+ database = Database.new(config.rails_root, config.rails_environment)
+ database.recreate!
+ database.load_dump_from_file(target_directory.path)
+ database.clean_dump_file(target_directory.path)
+ database.migrate!
end
end
end
end
\ No newline at end of file