Sha256: 587819e03508ac53dc08e89b2591afb43ee670633fc75c7e217e623038198b6e

Contents?: true

Size: 1.38 KB

Versions: 2

Compression:

Stored size: 1.38 KB

Contents

module DPL
  class Provider
    class Heroku < Provider
      requires 'heroku-api'
      requires 'rendezvous'

      def api
        @api ||= ::Heroku::API.new(:api_key => option(:api_key)) unless options[:user] and options[:password]
        @api ||= ::Heroku::API.new(:user => options[:user], :password => options[:password])
      end

      def check_auth
        log "authenticated as %s" % api.get_user.body["email"]
      end

      def check_app
        info = api.get_app(option(:app)).body
        options[:git] ||= info['git_url']
        log "found app #{info['name']}"
      end

      def setup_key(file)
        api.post_key File.read(file)
      end

      def remove_key
        api.delete_key(option(:key_name))
      end

      def push_app
        system "git push #{option(:git)} HEAD:master -f"
      end

      def run(command)
        data           = api.post_ps(option(:app), command, :attach => true).body
        rendezvous_url = data['rendezvous_url']
        Rendezvous.start(:url => rendezvous_url) unless rendezvous_url.nil?
      end

      def deploy
        super
      rescue ::Heroku::API::Errors::NotFound=> error
        raise Error, "#{error.message} (wrong app #{options[:app].inspect}?)", error.backtrace
      rescue ::Heroku::API::Errors::Unauthorized => error
        raise Error, "#{error.message} (wrong API key?)", error.backtrace
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
dpl-0.2.0 lib/dpl/provider/heroku.rb
dpl-0.1.0 lib/dpl/provider/heroku.rb