Sha256: f73da57c3e483318dd673b29092b6c89e6ff9019fde622a6def32d20cf9f70e2
Contents?: true
Size: 1.33 KB
Versions: 1
Compression:
Stored size: 1.33 KB
Contents
require 'fog/aws' # This module holds the connections for all AWS services used by the gem. module Aerosol::AWS extend self 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 def services @services ||= [] end 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 def env_attrs @env_attrs ||= [] end def creds attrs = Hash[env_attrs.map { |attr| [attr, public_send(attr)] }].reject { |k, v| v.nil? } if attrs.empty? if ENV['FOG_CREDENTIAL'] attrs = {} # let Fog use the env var else attrs = { :use_iam_profile => true } end end attrs end def reset_cache! services.each { |service| instance_variable_set(:"@#{service}", nil) } end service :s3, Fog::Storage::AWS service :compute, Fog::Compute::AWS service :auto_scaling, Fog::AWS::AutoScaling env_attr :aws_access_key_id, :aws_secret_access_key end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
aerosol-0.5.1 | lib/aerosol/aws.rb |