Grosse MàJ
This commit is contained in:
		
							
								
								
									
										12
									
								
								P5B/ruby/mon_projet/vendor/plugins/mysql_tasks/README
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								P5B/ruby/mon_projet/vendor/plugins/mysql_tasks/README
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
= MysqlTasks
 | 
			
		||||
 | 
			
		||||
Some rake tasks to automate common database tasks (create/destroy & backup/restore).
 | 
			
		||||
 | 
			
		||||
== Components
 | 
			
		||||
 | 
			
		||||
rake db:mysql:create           # Create database (using database.yml config)
 | 
			
		||||
rake db:mysql:destroy          # Destroy database (using database.yml config)
 | 
			
		||||
rake db:mysql:backup           # Dump schema and data to an SQL file (/db/backup_YYYY_MM_DD.sql)
 | 
			
		||||
rake db:mysql:restore          # Load schema and data from an SQL file (/db/restore.sql)
 | 
			
		||||
 | 
			
		||||
Specifying RAILS_ENV works if you want to perform operations on test or production databases.
 | 
			
		||||
							
								
								
									
										59
									
								
								P5B/ruby/mon_projet/vendor/plugins/mysql_tasks/tasks/mysql_tasks.rake
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								P5B/ruby/mon_projet/vendor/plugins/mysql_tasks/tasks/mysql_tasks.rake
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,59 @@
 | 
			
		||||
namespace :db do
 | 
			
		||||
  namespace :mysql do
 | 
			
		||||
    desc "Dump schema and data to an SQL file (/db/backup_YYYY_MM_DD.sql)"
 | 
			
		||||
    task :backup => :environment do
 | 
			
		||||
      current_date = Time.now.strftime("%Y_%m_%d")
 | 
			
		||||
      archive = "#{RAILS_ROOT}/db/backup_#{current_date}.sql"
 | 
			
		||||
      database, user, password = retrieve_db_info
 | 
			
		||||
    
 | 
			
		||||
      cmd = "/usr/bin/env mysqldump --opt --skip-add-locks -u#{user} "
 | 
			
		||||
      puts cmd + "... [password filtered]"
 | 
			
		||||
      cmd += " -p'#{password}' " unless password.nil?
 | 
			
		||||
      cmd += " #{database} > #{archive}"
 | 
			
		||||
      result = system(cmd)
 | 
			
		||||
    end
 | 
			
		||||
  
 | 
			
		||||
    desc "Load schema and data from an SQL file (/db/restore.sql)"
 | 
			
		||||
    task :restore => :environment do
 | 
			
		||||
      archive = "#{RAILS_ROOT}/db/restore.sql"
 | 
			
		||||
      database, user, password = retrieve_db_info
 | 
			
		||||
    
 | 
			
		||||
      cmd = "/usr/bin/env mysql -u #{user} #{database} < #{archive}"
 | 
			
		||||
      puts cmd + "... [password filtered]"
 | 
			
		||||
      cmd += " -p'#{password}'"
 | 
			
		||||
      result = system(cmd)
 | 
			
		||||
    end
 | 
			
		||||
  
 | 
			
		||||
    desc "Create database (using database.yml config)"
 | 
			
		||||
    task :create => :environment do
 | 
			
		||||
      database, user, password = retrieve_db_info
 | 
			
		||||
    
 | 
			
		||||
      sql = "CREATE DATABASE #{database};"
 | 
			
		||||
      sql += "GRANT ALL PRIVILEGES ON #{database}.* TO #{user}@localhost IDENTIFIED BY '#{password}';"
 | 
			
		||||
      mysql_execute(user, password, sql)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    desc "Destroy database (using database.yml config)"
 | 
			
		||||
    task :destroy => :environment do
 | 
			
		||||
      database, user, password = retrieve_db_info
 | 
			
		||||
      sql = "DROP DATABASE #{database};"
 | 
			
		||||
      mysql_execute(user, password, sql)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
  private
 | 
			
		||||
  def retrieve_db_info
 | 
			
		||||
    result = File.read "#{RAILS_ROOT}/config/database.yml"
 | 
			
		||||
    result.strip!
 | 
			
		||||
    config_file = YAML::load(ERB.new(result).result)
 | 
			
		||||
    return [
 | 
			
		||||
      config_file[RAILS_ENV]['database'],
 | 
			
		||||
      config_file[RAILS_ENV]['username'],
 | 
			
		||||
      config_file[RAILS_ENV]['password']
 | 
			
		||||
    ]
 | 
			
		||||
  end
 | 
			
		||||
  
 | 
			
		||||
  def mysql_execute(username, password, sql)
 | 
			
		||||
    system("/usr/bin/env mysql -u #{username} -p'#{password}' --execute=\"#{sql}\"")
 | 
			
		||||
  end
 | 
			
		||||
		Reference in New Issue
	
	Block a user