Class: S3Deployer
- Inherits:
-
Spar::Deployer
- Object
- Spar::Deployer
- S3Deployer
- Defined in:
- lib/spar/deployers/s3_deployer.rb
Direct Known Subclasses
Instance Method Summary collapse
- #age_out(old_assets) ⇒ Object
- #deploy(asset) ⇒ Object
- #finish ⇒ Object
- #prepare(assets) ⇒ Object
- #upload(asset) ⇒ Object
Methods inherited from Spar::Deployer
Instance Method Details
#age_out(old_assets) ⇒ Object
32 33 34 35 36 37 38 |
# File 'lib/spar/deployers/s3_deployer.rb', line 32 def age_out(old_assets) old_assets.flatten.each do |file| if Time.now - @bucket.objects[file].last_modified > @age_out @bucket.objects[file].delete end end end |
#deploy(asset) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/spar/deployers/s3_deployer.rb', line 40 def deploy(asset) remote_file = @bucket.objects[asset.write_path] if remote_file.exists? if remote_file.etag.gsub(/\"/,'') != asset.digest upload(asset) super end else upload(asset) super end end |
#finish ⇒ Object
61 62 63 64 65 66 67 68 |
# File 'lib/spar/deployers/s3_deployer.rb', line 61 def finish @bucket.objects['TIMESTAMP.txt'].write( :data => Time.now.to_s+"\n", :content_type => "text/plain", :acl => :public_read ) super end |
#prepare(assets) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/spar/deployers/s3_deployer.rb', line 5 def prepare(assets) @aws_key = Spar.settings['aws_key'] @aws_secret = Spar.settings['aws_secret'] @deploy_bucket = Spar.settings['deploy_bucket'] unless @aws_key and @aws_secret and @deploy_bucket raise "ERROR: You should set :aws_key, :aws_secret, and :deploy_bucket in your config.yml file so you can deploy to S3" end AWS.config( :access_key_id => @aws_key, :secret_access_key => @aws_secret, ) @s3 = AWS::S3.new @bucket = @s3.buckets[@deploy_bucket] unless @bucket.exists? @bucket = @s3.buckets.create(@deploy_bucket) end @age_out = 60 * 60 * 24 * 3 # 3 days super local_assets = assets.map(&:write_path) remote_assets = @bucket.objects.map{ |object| object.key }.reject{ |key| key =~ /\/$/ } age_out (remote_assets - local_assets) end |
#upload(asset) ⇒ Object
53 54 55 56 57 58 59 |
# File 'lib/spar/deployers/s3_deployer.rb', line 53 def upload(asset) if asset.write_path =~ /\.html$/ && !(asset.write_path =~ /\/?index\.html$/) @bucket.objects[asset.write_path.gsub(/\.html/, '/index.html')].write(asset.headers.merge(:data => asset.data)) else @bucket.objects[asset.write_path].write(asset.headers.merge(:data => asset.data)) end end |