class SafetyNetHeroku::BackupDatabaseWorker
Public Instance Methods
perform()
click to toggle source
# File lib/safety_net_heroku/backup_database_worker.rb, line 9 def perform database_name = SafetyNetHeroku.config[:database_name] region = SafetyNetHeroku.config[:aws_region] bucket = SafetyNetHeroku.config[:aws_bucket] backups_directory = SafetyNetHeroku.config[:aws_backups_directory] if database_name.nil? raise Exception.new 'SafetyNetHeroku.config[:database_name] not set' end if region.nil? raise Exception.new 'SafetyNetHeroku.config[:aws_region] not set' end if bucket.nil? raise Exception.new 'SafetyNetHeroku.config[:aws_bucket] not set' end if backups_directory.nil? raise Exception.new 'SafetyNetHeroku.config[:aws_backups_directory] not set' end temp_backups_root_directory = "#{Rails.root}/safety_net_heroku" temp_backups_directory = "#{temp_backups_root_directory}/database-backups" system("mongodump --uri=#{ENV['DB_URI_NO_OPTIONS']} --out=\"#{temp_backups_directory}\"") output_file_name = "#{Time.now.to_formatted_s(:long_ordinal).gsub(" ", "-").gsub(",", "")}.zip" output_path = "#{temp_backups_directory}/#{output_file_name}" system("zip -rj \"#{output_path}\" \"#{temp_backups_directory}/#{database_name}\"") s3 = Aws::S3::Resource.new(region: region) obj = s3.bucket(bucket).object("#{backups_directory}/#{output_file_name}") obj.upload_file(output_path) system("rm -r \"#{temp_backups_root_directory}\"") end