Advertisement
Guest User

Untitled

a guest
Jul 17th, 2016
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. namespace :db do
  2. namespace :data do
  3. desc "Dump data into sql script file: filename=[target filename]"
  4. task :dump => 'environment' do
  5. environment = (ENV.include?("RAILS_ENV")) ? (ENV["RAILS_ENV"]) : 'development'
  6. ENV["RAILS_ENV"] = Rails.env = environment
  7.  
  8. database = Rails.configuration.database_configuration[Rails.env]["database"]
  9. user = Rails.configuration.database_configuration[Rails.env]["username"]
  10. password = Rails.configuration.database_configuration[Rails.env]["password"]
  11. filename = (ENV.include?("FILENAME")) ? (ENV["FILENAME"]) : database
  12. timestamp = ENV['TIMESTAMP'] ? bool(ENV['TIMESTAMP']) : true
  13. file_suffix = DateTime.now.strftime('%Y%m%d_%H_%M_%S')
  14.  
  15. full_filename = filename + (timestamp ? "_#{file_suffix}" : '') + '.sql'
  16.  
  17. puts "Connecting to #{environment} environment..."
  18. sh "mysqldump -u#{user} -p#{password} #{database} --skip-triggers --compact " +
  19. "> #{Rails.root}/db/data/#{full_filename}"
  20.  
  21. puts "Successfully created #{full_filename} from #{environment} environment."
  22. end
  23.  
  24. desc "Load data from sql script file: filename=[data file]"
  25. task :load => 'environment' do
  26. environment = (ENV.include?("RAILS_ENV")) ? (ENV["RAILS_ENV"]) : 'development'
  27. ENV["RAILS_ENV"] = Rails.env = environment
  28.  
  29. database = Rails.configuration.database_configuration[Rails.env]["database"]
  30. user = Rails.configuration.database_configuration[Rails.env]["username"]
  31. password = Rails.configuration.database_configuration[Rails.env]["password"]
  32. filename = ENV['FILENAME']
  33. raise "Please specify a source file (FILENAME=[source.sql])" if filename.blank?
  34.  
  35. puts "Connecting to #{environment}..."
  36. ActiveRecord::Base.establish_connection(Rails.env.to_sym)
  37.  
  38. puts "Dropping tables..."
  39. ActiveRecord::Base.connection.execute('show tables').each do |table|
  40. puts " Dropping #{table[0]}"
  41. ActiveRecord::Base.connection.execute("drop table #{table[0]}")
  42. end
  43.  
  44. puts "Importing data from #{filename}..."
  45. sh "mysql -u#{user} -p#{password} #{database} < #{Rails.root}/db/data/#{filename}"
  46. puts "Completed loading #{filename} into #{environment} environment."
  47. end
  48. end
  49. end
  50.  
  51. private
  52.  
  53. def bool(s)
  54. s.match(/(true|t|yes|y|1)$/i) != nil
  55. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement