module Aerosol::AWS

This module holds the connections for all AWS services used by the gem.

Public Instance Methods

creds() click to toggle source
# File lib/aerosol/aws.rb, line 40
def creds
  Hash[env_attrs.map { |attr| [attr, public_send(attr)] }].reject { |k, v| v.nil? }
end
env_attr(*names) click to toggle source
# File lib/aerosol/aws.rb, line 21
def env_attr(*names)
  names.each do |name|
    define_method name do
      instance_variable_get(:"@#{name}") || ENV[name.to_s.upcase]
    end

    define_method :"#{name}=" do |val|
      reset_cache!
      instance_variable_set(:"@#{name}", val)
    end

    env_attrs << name
  end
end
env_attrs() click to toggle source
# File lib/aerosol/aws.rb, line 36
def env_attrs
  @env_attrs ||= []
end
reset_cache!() click to toggle source
# File lib/aerosol/aws.rb, line 44
def reset_cache!
  services.each { |service| instance_variable_set(:"@#{service}", nil) }
end
service(name, klass) click to toggle source
# File lib/aerosol/aws.rb, line 5
def service(name, klass)
  define_method name do
    if val = instance_variable_get(:"@#{name}")
      val
    else
      instance = klass.new(creds)
      instance_variable_set(:"@#{name}", instance)
    end
  end
  services << name
end
services() click to toggle source
# File lib/aerosol/aws.rb, line 17
def services
  @services ||= []
end