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