backupit 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/VERSION +1 -1
  2. data/lib/backup.rb +7 -1
  3. data/lib/backup/storage.rb +14 -12
  4. metadata +7 -8
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.2.1
@@ -29,7 +29,13 @@ module Backup
29
29
 
30
30
  def self.run(shell)
31
31
  puts shell.red
32
- @@options[:pretend] ? true : system(shell)
32
+ if @@options[:pretend]
33
+ true
34
+ else
35
+ results = `#{shell}`
36
+ return false if $?.to_i > 0
37
+ results
38
+ end
33
39
  end
34
40
 
35
41
  def self.email(options)
@@ -3,7 +3,7 @@ require 'tempfile'
3
3
  module Backup
4
4
  class Storage
5
5
  extend Backup::Attribute
6
- attr_accessor :name, :config
6
+ attr_accessor :name, :config, :changes
7
7
 
8
8
  def initialize(name, config)
9
9
  self.name = name
@@ -19,10 +19,12 @@ module Backup
19
19
  @scp_host = "-P#{@server_config.port || 22} #{@server_config.host}"
20
20
  @rsync_host = "-e 'ssh -p#{@server_config.port || 22}' #{@server_config.host}"
21
21
 
22
+ self.changes = []
23
+
22
24
  backup_rsync
23
25
  backup_mysql
24
- notice_changes
25
26
  commit_changes
27
+ notice_changes
26
28
  end
27
29
 
28
30
  def backup_rsync
@@ -33,7 +35,7 @@ module Backup
33
35
  @server_config.rsync.to_a.map do |path|
34
36
  remote_path = path.is_a?(Hash) ? path.first[0] : path
35
37
  target_name = File.basename(path.is_a?(Hash) ? path.first[1] : path)
36
- Backup::Main.run "rsync -ravk #{@rsync_host}:#{remote_path.sub(/\/?$/,'/')} '#{File.join(target_path, target_name)}'"
38
+ self.changes << Backup::Main.run "rsync -ravk #{@rsync_host}:#{remote_path.sub(/\/?$/,'/')} '#{File.join(target_path, target_name)}'"
37
39
  end
38
40
  end
39
41
 
@@ -50,9 +52,9 @@ module Backup
50
52
  mysql_config += " #{mysql.options}" if mysql.options
51
53
 
52
54
  tmpfile = Tempfile.new('mysql.sql')
53
- Backup::Main.run("ssh #{@ssh_host} 'mysqldump #{mysql_config} > #{tmpfile.path}'") &&
54
- Backup::Main.run("scp #{@scp_host}:#{tmpfile.path} '#{target_path}/#{key}.sql'") &&
55
- Backup::Main.run("ssh #{@ssh_host} 'rm #{tmpfile.path}'")
55
+ self.changes << Backup::Main.run("ssh #{@ssh_host} 'mysqldump #{mysql_config} > #{tmpfile.path}'") &&
56
+ self.changes << Backup::Main.run("scp #{@scp_host}:#{tmpfile.path} '#{target_path}/#{key}.sql'") &&
57
+ self.changes << Backup::Main.run("ssh #{@ssh_host} 'rm #{tmpfile.path}'")
56
58
  end
57
59
  end
58
60
 
@@ -61,20 +63,20 @@ module Backup
61
63
  smtp_config = config.smtp
62
64
  Mail.defaults { delivery_method :smtp, smtp_config } if smtp_config
63
65
 
64
- changes = `git diff`
65
66
  Backup::Main.email(:from => @server_config.email,
66
67
  :to => @server_config.email,
67
- :subject => "#{@server.name} backed up at #{Time.now}, changes: #{changes.split("\n").size}",
68
- :body => changes
68
+ :subject => "#{@server.name} backed up at #{Time.now}",
69
+ :body => changes.join("\n"),
70
+ :charset => 'utf-8', :content_type => 'text/plain; charset=utf-8'
69
71
  ) if @server_config.email
70
72
  end
71
73
  end
72
74
 
73
75
  def commit_changes
74
76
  Dir.chdir(@backup_path) do
75
- Backup::Main.run("git init") unless system("git status")
76
- Backup::Main.run("git add .")
77
- Backup::Main.run("git commit -am '#{Time.now.strftime("%Y-%m-%d %H:%M")}'")
77
+ (self.changes << Backup::Main.run("git init")) unless system("git status")
78
+ self.changes << Backup::Main.run("git add .")
79
+ self.changes << Backup::Main.run("git commit -am '#{Time.now.strftime("%Y-%m-%d %H:%M")}'")
78
80
  end
79
81
  end
80
82
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: backupit
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 21
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 0
10
- version: 0.2.0
9
+ - 1
10
+ version: 0.2.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jinzhu
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-06-28 00:00:00 +08:00
18
+ date: 2011-07-11 00:00:00 +08:00
19
19
  default_executable: backup
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -89,10 +89,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
89
89
  requirements: []
90
90
 
91
91
  rubyforge_project:
92
- rubygems_version: 1.4.2
92
+ rubygems_version: 1.6.2
93
93
  signing_key:
94
94
  specification_version: 3
95
95
  summary: A tool to backup your servers
96
- test_files:
97
- - test/helper.rb
98
- - test/test_backupit.rb
96
+ test_files: []
97
+