heroku_backup_task 0.0.2 → 0.0.3
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/README.md +48 -0
- data/lib/heroku_backup_task.rb +42 -0
- data/lib/heroku_backup_task/tasks.rb +5 -0
- data/lib/heroku_backup_task/version.rb +3 -0
- metadata +8 -5
data/README.md
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
# heroku\_backup\_task
|
2
|
+
|
3
|
+
## Description
|
4
|
+
|
5
|
+
A simple helper to automate your [Heroku](http://heroku.com) app [backups](http://addons.heroku.com/pgbackups)
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
# Gemfile
|
10
|
+
gem "heroku_backup_task"
|
11
|
+
|
12
|
+
# Rakefile
|
13
|
+
require "heroku_backup_task/tasks"
|
14
|
+
task :cron => :heroku_backup
|
15
|
+
|
16
|
+
# Rakefile (alternative)
|
17
|
+
require "heroku_backup_task"
|
18
|
+
task :cron do
|
19
|
+
# other code here
|
20
|
+
HerokuBackupTask.execute
|
21
|
+
end
|
22
|
+
|
23
|
+
Make sure you install the pgbackups addon
|
24
|
+
|
25
|
+
heroku addons:add pgbackups:basic
|
26
|
+
|
27
|
+
## Configuration
|
28
|
+
|
29
|
+
By default, `heroku_backup_task` will back up `DATABASE_URL`. You can change this with:
|
30
|
+
|
31
|
+
heroku config:add HEROKU_BACKUP_DATABASES="SOME_DATABASE_URL,OTHER_DATABASE_URL"
|
32
|
+
|
33
|
+
## Usage
|
34
|
+
|
35
|
+
### NOTE: `heroku_backup_task` will expire your oldest backup to make room for a new backup if necessary.
|
36
|
+
|
37
|
+
Set up cron on your application with
|
38
|
+
|
39
|
+
heroku addons:add cron:daily
|
40
|
+
|
41
|
+
You will see something like this in your cron logs
|
42
|
+
|
43
|
+
[Thu Nov 18 12:59:56 -0500 2010] starting heroku backup task
|
44
|
+
[Thu Nov 18 12:59:57 -0500 2010] backing up: DATABASE_URL
|
45
|
+
|
46
|
+
## License
|
47
|
+
|
48
|
+
MIT
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require "heroku"
|
2
|
+
require "pgbackups/client"
|
3
|
+
|
4
|
+
module HerokuBackupTask; class << self
|
5
|
+
|
6
|
+
def log(message)
|
7
|
+
puts "[#{Time.now}] #{message}"
|
8
|
+
end
|
9
|
+
|
10
|
+
def backups_url
|
11
|
+
ENV["PGBACKUPS_URL"]
|
12
|
+
end
|
13
|
+
|
14
|
+
def client
|
15
|
+
@client ||= PGBackups::Client.new(ENV["PGBACKUPS_URL"])
|
16
|
+
end
|
17
|
+
|
18
|
+
def databases
|
19
|
+
if db = ENV["HEROKU_BACKUP_DATABASES"]
|
20
|
+
db.split(",").map(&:strip)
|
21
|
+
else
|
22
|
+
["DATABASE_URL"]
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def backup_name(to_url)
|
27
|
+
# translate s3://bucket/email/foo/bar.dump => foo/bar
|
28
|
+
parts = to_url.split('/')
|
29
|
+
parts.slice(4..-1).join('/').gsub(/\.dump$/, '')
|
30
|
+
end
|
31
|
+
|
32
|
+
def execute
|
33
|
+
log "starting heroku backup task"
|
34
|
+
|
35
|
+
databases.each do |db|
|
36
|
+
db_url = ENV[db]
|
37
|
+
log "backing up: #{db}"
|
38
|
+
client.create_transfer(db_url, db, nil, "BACKUP", :expire => true)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
end; end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: heroku_backup_task
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 3
|
10
|
+
version: 0.0.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- David Dollar
|
@@ -56,8 +56,11 @@ extensions: []
|
|
56
56
|
|
57
57
|
extra_rdoc_files: []
|
58
58
|
|
59
|
-
files:
|
60
|
-
|
59
|
+
files:
|
60
|
+
- lib/heroku_backup_task/tasks.rb
|
61
|
+
- lib/heroku_backup_task/version.rb
|
62
|
+
- lib/heroku_backup_task.rb
|
63
|
+
- README.md
|
61
64
|
has_rdoc: true
|
62
65
|
homepage: http://github.com/ddollar/heroku_backup_task
|
63
66
|
licenses: []
|