backup_tasks 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ pkg/*
2
+ *.gem
3
+ .bundle
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in backup_tasks.gemspec
4
+ gemspec
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,21 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "backup_tasks/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "backup_tasks"
7
+ s.version = BackupTasks::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Richard Hart"]
10
+ s.email = ["richard@ur-ban.com"]
11
+ s.homepage = "http://github.com/Hates/backup_tasks"
12
+ s.summary = %q{Simple rake task for backing up to S3.}
13
+ s.description = %q{Simple rake task for backing up to S3.}
14
+
15
+ s.rubyforge_project = "backup_tasks"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+ end
@@ -0,0 +1,3 @@
1
+ module BackupTasks
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,61 @@
1
+ require 'aws/s3'
2
+ require 'yaml'
3
+ require 'erb'
4
+ require 'active_record'
5
+
6
+ namespace :s3 do
7
+
8
+ desc "Backup the database to S3"
9
+ task :db do
10
+ archive = "#{'db'}-#{Rails.env}-#{Time.now.to_s(:number)}"
11
+ database, user, password = retrieve_db_info
12
+ cmd = "mysqldump --opt --skip-add-locks -u#{user} "
13
+ cmd += " -p'#{password}' " unless password.nil?
14
+ cmd += " #{database} > #{archive}.sql"
15
+ result = system(cmd)
16
+ raise("mysqldump failed. msg: #{$?}") unless result
17
+ send_to_s3(archive)
18
+
19
+ archive = "#{'db'}-#{Rails.env}_facebook-#{Time.now.to_s(:number)}"
20
+ database, user, password = retrieve_db_info
21
+ cmd = "mysqldump --opt --skip-add-locks -u#{user} "
22
+ cmd += " -p'#{password}' " unless password.nil?
23
+ cmd += " #{database}_facebook > #{archive}_facebook.sql"
24
+ result = system(cmd)
25
+ raise("mysqldump failed. msg: #{$?}") unless result
26
+ send_to_s3("#{archive}_facebook")
27
+ end
28
+
29
+ end
30
+
31
+ def retrieve_db_info
32
+ # read the remote database file....
33
+ # there must be a better way to do this...
34
+ result = File.read "#{RAILS_ROOT}/config/database.yml"
35
+ result.strip!
36
+ config_file = YAML::load(ERB.new(result).result)
37
+ username = config_file[RAILS_ENV]['username'] || "root"
38
+ password = config_file[RAILS_ENV]['password']
39
+ return [
40
+ config_file[RAILS_ENV]['database'],
41
+ username,
42
+ password
43
+ ]
44
+ end
45
+
46
+ def send_to_s3(tmp_file)
47
+ @s3_configs ||= YAML::load(ERB.new(IO.read("#{RAILS_ROOT}/config/s3.yml")).result)
48
+ AWS::S3::Base.establish_connection!(:access_key_id => @s3_configs[Rails.env]['access_key_id'], :secret_access_key => @s3_configs[Rails.env]['secret_access_key'])
49
+ AWS::S3::Bucket.create("db-#{Rails.env}")
50
+
51
+ archive = "#{tmp_file}.tar.gz"
52
+ cmd = "tar -cpzf #{archive} #{tmp_file}.sql"
53
+ puts cmd
54
+ system cmd
55
+
56
+ AWS::S3::S3Object.store(archive, open(archive), "db-#{Rails.env}")
57
+ cmd = "rm -rf #{archive} #{tmp_file}.sql"
58
+ puts cmd
59
+ system cmd
60
+ end
61
+
metadata ADDED
@@ -0,0 +1,73 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: backup_tasks
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Richard Hart
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-10-12 00:00:00 +01:00
19
+ default_executable:
20
+ dependencies: []
21
+
22
+ description: Simple rake task for backing up to S3.
23
+ email:
24
+ - richard@ur-ban.com
25
+ executables: []
26
+
27
+ extensions: []
28
+
29
+ extra_rdoc_files: []
30
+
31
+ files:
32
+ - .gitignore
33
+ - Gemfile
34
+ - Rakefile
35
+ - backup_tasks.gemspec
36
+ - lib/backup_tasks.rake
37
+ - lib/backup_tasks/version.rb
38
+ has_rdoc: true
39
+ homepage: http://github.com/Hates/backup_tasks
40
+ licenses: []
41
+
42
+ post_install_message:
43
+ rdoc_options: []
44
+
45
+ require_paths:
46
+ - lib
47
+ required_ruby_version: !ruby/object:Gem::Requirement
48
+ none: false
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ hash: 3
53
+ segments:
54
+ - 0
55
+ version: "0"
56
+ required_rubygems_version: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ hash: 3
62
+ segments:
63
+ - 0
64
+ version: "0"
65
+ requirements: []
66
+
67
+ rubyforge_project: backup_tasks
68
+ rubygems_version: 1.3.7
69
+ signing_key:
70
+ specification_version: 3
71
+ summary: Simple rake task for backing up to S3.
72
+ test_files: []
73
+