<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -7,6 +7,14 @@ aws_secret_access_key: --replace me with your AWS secret access key--
 
 # Advanced customizations
 
+# Use dynamic bucket path  with erb
+s3_bucket: &lt;%=  %&gt;
+
+backup and compress all app files w/o log/* and tmp/* dirs
+[config sample]
+
+added support of sqlite
+
 # Turn on verbose output for debugging purposes:
 verbose: true
 </diff>
      <filename>config/backup_fu.yml.advanced_example</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,8 @@
 require 'yaml'
 require 'active_support'
-require 'aws/s3'
+require 'mime/types'
+require 'right_aws'
+require 'erb'
 
 class BackupFuConfigError &lt; StandardError; end
 class S3ConnectError &lt; StandardError; end
@@ -10,8 +12,12 @@ class BackupFu
   def initialize
     db_conf = YAML.load_file(File.join(RAILS_ROOT, 'config', 'database.yml')) 
     @db_conf = db_conf[RAILS_ENV].symbolize_keys
-    fu_conf = YAML.load_file(File.join(RAILS_ROOT, 'config', 'backup_fu.yml'))
-    @fu_conf = fu_conf[RAILS_ENV].symbolize_keys
+    
+    raw_config = File.read(File.join(RAILS_ROOT, 'config', 'backup_fu.yml'))
+    erb_config = ERB.new(raw_config).result 
+    fu_conf    = YAML.load(erb_config)
+    @fu_conf   = fu_conf[RAILS_ENV].symbolize_keys
+    
     @fu_conf[:mysqldump_options] ||= '--complete-insert --skip-extended-insert'
     @verbose = !@fu_conf[:verbose].nil?
     @timestamp = datetime_formatted
@@ -31,28 +37,30 @@ class BackupFu
     if @db_conf.has_key?(:password) &amp;&amp; !@db_conf[:password].blank?
       password = &quot;--password=#{@db_conf[:password]}&quot;
     end
+    
     full_dump_path = File.join(dump_base_path, db_filename)
     case @db_conf[:adapter]
-    when 'postgresql'
-      cmd = niceify &quot;PGPASSWORD=#{password} #{dump_path} --user=#{@db_conf[:username]} --host=#{host} --port=#{port} #{@db_conf[:database]} &gt; #{full_dump_path}&quot;
-    when 'mysql'
-      cmd = niceify &quot;#{dump_path} #{@fu_conf[:mysqldump_options]} #{host} #{port} --user=#{@db_conf[:username]} #{password} #{@db_conf[:database]} &gt; #{full_dump_path}&quot;
+      when 'postgresql'
+        cmd = niceify &quot;PGPASSWORD=#{password} #{dump_path} --user=#{@db_conf[:username]} --host=#{host} --port=#{port} #{@db_conf[:database]} &gt; #{full_dump_path}&quot;
+      when 'mysql'
+        cmd = niceify &quot;#{dump_path} #{@fu_conf[:mysqldump_options]} #{host} #{port} --user=#{@db_conf[:username]} #{password} #{@db_conf[:database]} &gt; #{full_dump_path}&quot;
     end
     puts cmd if @verbose
     `#{cmd}`
 
-    compress_db(dump_base_path, db_filename) if !@fu_conf[:disable_compression]
+    if !@fu_conf[:disable_compression]
+      compress_db(dump_base_path, db_filename) 
+      File.unlink full_dump_path
+    end
   end
-  
+
   def backup
     dump
-    establish_s3_connection
     
     file = final_db_dump_path()
     puts &quot;\nBacking up to S3: #{file}\n&quot; if @verbose
     
-    AWS::S3::S3Object.store(File.basename(file), open(file), @fu_conf[:s3_bucket], :access =&gt; :private)
-    
+    store_file(file)
   end
   
   ## Static-file Dump/Backup methods
@@ -67,12 +75,11 @@ class BackupFu
   
   def backup_static
     dump_static
-    establish_s3_connection
     
     file = final_static_dump_path()
     puts &quot;\nBacking up Static files to S3: #{file}\n&quot; if @verbose
     
-    AWS::S3::S3Object.store(File.basename(file), open(file), @fu_conf[:s3_bucket], :access =&gt; :private)
+    store_file(file)
   end
 
   def cleanup
@@ -102,14 +109,19 @@ class BackupFu
   
   private
   
-  def establish_s3_connection
-    unless AWS::S3::Base.connected?
-      AWS::S3::Base.establish_connection!(
-        :access_key_id =&gt; @fu_conf[:aws_access_key_id],
-        :secret_access_key =&gt; @fu_conf[:aws_secret_access_key]
-      )
-    end
-    raise S3ConnectError, &quot;\nERROR: Connection to Amazon S3 failed.&quot; unless AWS::S3::Base.connected?
+  def s3
+    @s3 ||= RightAws::S3.new(@fu_conf[:aws_access_key_id],
+                             @fu_conf[:aws_secret_access_key])
+  end
+  
+  def s3_bucket
+    @s3_bucket ||= s3.bucket(@fu_conf[:s3_bucket], true, 'private')
+  end
+  
+  def store_file(file)
+    key = s3_bucket.key(File.basename(file))
+    key.data = open(file)
+    key.put(nil, 'private')
   end
   
   def check_conf
@@ -265,4 +277,16 @@ class BackupFu
       ''
     end
   end
-end
\ No newline at end of file
+
+  def skips
+    return '' unless @fu_conf[:skips]
+
+    raise BackupFuConfigError, 'skip option is not array or string' unless @fu_conf[:skips].kind_of?(Array) || @fu_conf[:skips].kind_of?(String)
+
+    if @fu_conf[:skips].kind_of?(Array)
+      @fu_conf[:skips].collect{|skip| &quot; --exclude=#{skip} &quot; }.join
+    else
+      @fu_conf[:skips]
+    end
+  end
+end</diff>
      <filename>lib/backup_fu.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>6b1ae1eb471666c44815c3bcb4d107f1df4d3bae</id>
    </parent>
  </parents>
  <author>
    <name>Randy Schmidt</name>
    <email>randy@umlatte.com</email>
  </author>
  <url>http://github.com/gravelpup/backup_fu/commit/558decb096f8b24db7670f2356dd9170bc76340e</url>
  <id>558decb096f8b24db7670f2356dd9170bc76340e</id>
  <committed-date>2009-01-28T09:23:16-08:00</committed-date>
  <authored-date>2008-09-03T17:30:32-07:00</authored-date>
  <message>Converted backup_fu to use right_aws

unlink source file if compression is enabled

add support of erb config

changed samples</message>
  <tree>2cd87ccb3dba4b85896ed0f6d7d143927c8d9816</tree>
  <committer>
    <name>Samuel Goebert</name>
    <email>hello@bigcurl.de</email>
  </committer>
</commit>
