Sha256: fafd9229a0d82e134f49b10c29cd55761abe09cf54b24fc37ecbb20f4733380d

Contents?: true

Size: 1.29 KB

Versions: 3

Compression:

Stored size: 1.29 KB

Contents

require 'fog'

module Stevenson
  module Deployer
    class S3
      include Deployer::Base

      attr_reader :deployment_bucket_name, :deployment_key

      def initialize(options)
        @deployment_bucket_name, @deployment_key, @deployment_access_key, @deployment_access_secret = options["s3"]
        super
      end

      def deploy!(directory)
        entries_for(directory).each do |file_path, file_name|
          s3_bucket.files.create(
            key:    File.join(deployment_key, file_name),
            body:   File.read(file_path),
            public: true,
          ) if File.file?(file_path)
        end
      end

      def entries_for(directory)
        if File.file?(directory)
          [
            [directory, File.basename(directory)]
          ]
        else
          Dir.glob("#{directory}/**/*").collect { |f| [f, f.partition(directory).last] }
        end
      end

      private

      def fog
        @_fog ||= Fog::Storage.new(
          provider:              'AWS',
          aws_access_key_id:     @deployment_access_key || ENV["AWS_ACCESS_KEY_ID"],
          aws_secret_access_key: @deployment_access_secret || ENV["AWS_SECRET_ACCESS_KEY"],
        )
      end

      def s3_bucket
        @_s3_bucket = fog.directories.new(key: deployment_bucket_name)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
stevenson-2.3.3 lib/stevenson/deployers/s3.rb
stevenson-2.3.2 lib/stevenson/deployers/s3.rb
stevenson-2.3.1 lib/stevenson/deployers/s3.rb