class S3rbsync::Synchronizer

Public Class Methods

new(configure, directory = nil) click to toggle source
# File lib/s3rbsync/synchronizer.rb, line 6
def initialize(configure, directory = nil)
  @configure = configure
  @local_dir = directory
  @s3 = Fog::Storage.new(:provider              => 'AWS',
                         :aws_access_key_id     => @configure.access_key,
                         :aws_secret_access_key => @configure.secret_key,
                         :region                => (@configure.region || 'ap-northeast-1'),
                         :persistent            => false )
  @bucket = @s3.directories.get(@configure.bucket_name)
  @queue = Queue.new
rescue => e
  puts "----- Error -----"
  puts e.message
  exit 1
end

Public Instance Methods

connected?() click to toggle source
# File lib/s3rbsync/synchronizer.rb, line 22
def connected?
  !!@bucket
end
sync!() click to toggle source
# File lib/s3rbsync/synchronizer.rb, line 26
def sync!
  # puts '...call sync!'
  upload_files(@local_dir)
end

Private Instance Methods

get_remote_file(file_name) click to toggle source
# File lib/s3rbsync/synchronizer.rb, line 64
def get_remote_file(file_name)
  @bucket.files.get(file_name)
end
modified?(local_file, remote_file) click to toggle source
# File lib/s3rbsync/synchronizer.rb, line 68
def modified?(local_file, remote_file)
  # puts "verifying file: #{local_file}"
  return true unless remote_file
  File.mtime(local_file) > remote_file.last_modified
end
recursive_upload() click to toggle source
# File lib/s3rbsync/synchronizer.rb, line 39
def recursive_upload
  upload_in_directory(@queue.pop, :recursible => true) until @queue.empty?
end
upload!(file_name) click to toggle source
# File lib/s3rbsync/synchronizer.rb, line 56
def upload!(file_name)
  remote_file = get_remote_file(file_name)
  return if remote_file && (not modified?(file_name, remote_file))
  remote_file.destroy if remote_file && modified?(file_name, remote_file)
  @bucket.files.create(:key => "#{file_name}", :body => open(file_name), :public => false)
  puts "copied #{file_name}"
end
upload_files(dir) click to toggle source
# File lib/s3rbsync/synchronizer.rb, line 34
def upload_files(dir)
  upload_in_directory(dir)
  recursive_upload
end
upload_in_directory(dir, options={}) click to toggle source
# File lib/s3rbsync/synchronizer.rb, line 43
def upload_in_directory(dir, options={})
  Dir.entries(dir).each do |file|
    next if file.start_with?('.')

    file_name = options[:recursible] ? File.join(dir, file) : file
    if File.directory?(file_name)
      @queue.push(file_name)
    else
      upload!(file_name)
    end
  end
end