module Fog::Provider

Public Class Methods

extended(base) click to toggle source
# File lib/fog/core/provider.rb, line 12
def extended(base)
  provider = base.to_s.split("::").last
  Fog.providers[provider.downcase.to_sym] = provider
  Fog.providers[underscore_name(provider).to_sym] = provider
end

Private Class Methods

underscore_name(string) click to toggle source
# File lib/fog/core/provider.rb, line 20
def underscore_name(string)
  string.gsub(/::/, '/').
    gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
    gsub(/([a-z\d])([A-Z])/,'\1_\2').
    tr("-", "_").
    downcase
end

Public Instance Methods

[](service_key) click to toggle source
# File lib/fog/core/provider.rb, line 29
def [](service_key)
  eval(@services_registry[service_key]).new
end
service(new_service, constant_string) click to toggle source
# File lib/fog/core/provider.rb, line 33
def service(new_service, constant_string)
  Fog.services[new_service] ||= []
  Fog.services[new_service] |= [to_s.split("::").last.downcase.to_sym]
  @services_registry ||= {}
  @services_registry[new_service] = service_klass(constant_string)
end
service_klass(constant_string) click to toggle source

Returns service constant path, with provider, as string. If “provider::service” is defined (the preferred format) then it returns that string, otherwise it returns the deprecated string “service::provider”.

# File lib/fog/core/provider.rb, line 47
def service_klass(constant_string)
  eval([to_s, constant_string].join("::"))
  [to_s, constant_string].join("::")
rescue NameError
  provider = to_s.split("::").last
  Fog::Logger.deprecation("Unable to load #{[to_s, constant_string].join("::")}")
  Fog::Logger.deprecation(
    format(
      Fog::ServicesMixin::E_SERVICE_PROVIDER_CONSTANT,
      service: constant_string,
      provider: provider
    )
  )
  ['Fog', constant_string, provider].join("::")
end
services() click to toggle source
# File lib/fog/core/provider.rb, line 40
def services
  @services_registry.keys
end