Sha256: e4066b8a72bc76ce1ea36cb37c7fe02d30115854f9a00a8941cd026a235a7c9b

Contents?: true

Size: 1.88 KB

Versions: 1

Compression:

Stored size: 1.88 KB

Contents

require 'haml'
require 'aws/s3'

unless Capistrano::Configuration.respond_to?(:instance)
  abort "s3-static-site requires Capistrano >= 2."
end

Capistrano::Configuration.instance(true).load do
  def _cset(name, *args, &block)
    set(name, *args, &block) if !exists?(name)
  end
  
  _cset :deployment_path, `pwd`.gsub("\n", "") + "/public/"
  
  def base_file_path(file)
    file.gsub(deployment_path, "")
  end
  
  def files
    Dir.glob("#{deployment_path}/**/*")
  end
  
  # Establishes the connection to Amazon S3
  def establish_connection!
    AWS::S3::Base.establish_connection!(
      :access_key_id     => access_key_id,
      :secret_access_key => secret_access_key
    )
  end
  
  # Deployment recipes
  namespace :deploy do
    namespace :s3 do      
      desc "Empties bucket of all files. Caution when using this command, as it cannot be undone!"
      task :empty do
        establish_connection!
        
        puts "Emptying bucket..."

        AWS::S3::Bucket.find(bucket).delete_all
      end

      desc "Upload files to the bucket in the current state"
      task :upload_files do
        establish_connection!

        files.each do |file|
          if !File.directory?(file)
            path = base_file_path(file)

            puts "Uploading #{path}..."

            contents = case File.extname(path)
            when ".haml"
              path.gsub!(".haml", "")

              engine = Haml::Engine.new(File.read(file))
              engine.render
            when ".sass"
              path.gsub!(".sass", "")

              engine = Sass::Engine.new(File.read(file))
              engine.render
            else
              open(file)
            end

            AWS::S3::S3Object.store(path, contents, bucket, :access => :public_read)
          end
        end
      end
    end
    
    task :update do
      s3.empty
      s3.upload_files
    end

    task :restart do; end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
s3-static-site-0.1.0 lib/s3-static-site.rb