Sha256: f9caab5e7daf9ccf133da8d53f713544376f94186345e4369aafc4a02525f1c2

Contents?: true

Size: 1.84 KB

Versions: 1

Compression:

Stored size: 1.84 KB

Contents

require 'singleton'

module EY
  # All methods are defined on this module. For example, you're supposed to say
  #
  #   EY::Metadata.database_username
  #
  # instead of trying to call it from a particular adapter.
  class Metadata
    include Singleton
    
    attr_writer :app_name
    
    METHODS = %w{
      app_master
      app_name
      app_servers
      app_slaves
      current_path
      database_host
      database_name
      database_password
      database_username
      db_master
      db_servers
      db_slaves
      environment_name
      environment_names
      mysql_command
      mysqldump_command
      present_instance_id
      present_instance_role
      present_public_hostname
      present_security_group
      repository_uri
      shared_path
      solo
      ssh_aliases
      ssh_password
      ssh_username
      stack_name
      utilities
    }
    
    # The path to the current deploy on app servers.
    def current_path
      "/data/#{app_name}/current"
    end
    
    # The path to the shared directory on app servers.
    def shared_path
      "/data/#{app_name}/shared"
    end
    
    # This gets raised when you can't get a particular piece of metadata from the execution environment you're in.
    class CannotGetFromHere < RuntimeError
    end
    
    autoload :SshAliasHelper, 'engineyard-metadata/ssh_alias_helper'

    autoload :Insider, 'engineyard-metadata/insider'
    autoload :Outsider, 'engineyard-metadata/outsider'
    autoload :ChefDna, 'engineyard-metadata/chef_dna'
    autoload :AmazonEc2Api, 'engineyard-metadata/amazon_ec2_api'
    autoload :EngineYardCloudApi, 'engineyard-metadata/engine_yard_cloud_api'
    
    def reload
      if File.directory? '/var/log/engineyard'
        Metadata.send :include, Insider
      else
        Metadata.send :include, Outsider
      end
    end
  end
end

EY.metadata.reload

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
engineyard-metadata-0.2.2 lib/engineyard-metadata/metadata.rb