lib/microstatic/s3_deployer.rb in microstatic-0.2.0 vs lib/microstatic/s3_deployer.rb in microstatic-0.3.0
- old
+ new
@@ -1,57 +1,54 @@
require 'digest/md5'
require 'pathname'
-require 'aws/s3'
+module Microstatic
# The following is based on code generously
# shared by Giles Alexander (@gga)
-class Microstatic::S3Deployer
+class S3Deployer
+ include UsesFog
def initialize( local_dir, bucket, aws_creds )
- [:access_key_id,:secret_access_key].each do |required_key|
- raise ArgumentError, "must supply :#{required_key}" unless aws_creds.key?(required_key)
- end
+ check_and_store_aws_creds(aws_creds)
@local_dir = Pathname.new(local_dir)
@bucket = bucket
- @aws_creds = aws_creds
end
def upload
- AWS::S3::Base.establish_connection!(@aws_creds)
-
Pathname.glob(@local_dir+"**/*") do |child|
upload_file(child) unless child.directory?
end
end
def upload_file( file )
s3_key = file.relative_path_from(@local_dir).to_s
begin
- s3_object = AWS::S3::S3Object.find(s3_key, @bucket)
- rescue AWS::S3::NoSuchKey
+ s3_object = connection.head_object(@bucket,s3_key)
+ rescue Excon::Errors::NotFound
s3_object = false
end
if !s3_object
log_action('CREATE', s3_key)
- AWS::S3::S3Object.store(s3_key, file.open, @bucket)
+ connection.put_object( @bucket, s3_key, file.open, 'x-amz-acl' => 'public-read' )
else
- s3_md5 = s3_object.about['etag'].sub(/"(.*)"/,'\1')
+ s3_md5 = s3_object.headers['ETag'].sub(/"(.*)"/,'\1')
local_md5 = Digest::MD5.hexdigest( file.read )
if( s3_md5 == local_md5 )
log_action('NO CHANGE', s3_key)
else
log_action('UPDATE', s3_key)
- AWS::S3::S3Object.store(s3_key, file.open, @bucket)
+ connection.put_object( @bucket, s3_key, file.open )
end
end
end
def log_action(action,file)
message = action.to_s.rjust(10) + " " + file
puts message
end
end
+end