Sha256: 3917885c2b974eb235382a622504ffe13e4b8f96391cd1370f73663a973fc814

Contents?: true

Size: 1.89 KB

Versions: 309

Compression:

Stored size: 1.89 KB

Contents

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

        def needs_key?
          false
        end

        def api
          @api ||= ::Heroku::API.new(api_options)
        end

        def api_options
          api_options = { headers: { 'User-Agent' => user_agent(::Heroku::API::HEADERS.fetch('User-Agent')) } }
          if options[:user] and options[:password]
            api_options[:user]     = options[:user]
            api_options[:password] = options[:password]
          else
            api_options[:api_key]  = option(:api_key)
          end
          api_options
        end

        def user
          @user ||= api.get_user.body["email"]
        end

        def check_auth
          log "authenticated as %s" % user
        end

        def info
          @info ||= api.get_app(option(:app)).body
        end

        def check_app
          log "checking for app '#{option(:app)}'"
          log "found app '#{info['name']}'"
        rescue ::Heroku::API::Errors::Forbidden => error
          raise Error, "#{error.message} (does the app '#{option(:app)}' exist and does your account have access to it?)", error.backtrace
        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 restart
          api.post_ps_restart option(:app)
        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
end

Version data entries

309 entries across 309 versions & 1 rubygems

Version Path
dpl-1.8.37.travis.2118.5 lib/dpl/provider/heroku/generic.rb
dpl-1.8.36 lib/dpl/provider/heroku/generic.rb
dpl-1.8.37.travis.2106.5 lib/dpl/provider/heroku/generic.rb
dpl-1.8.33.travis.2031.5 lib/dpl/provider/heroku/generic.rb
dpl-1.8.33.travis.2025.5 lib/dpl/provider/heroku/generic.rb
dpl-1.8.33.travis.1999.5 lib/dpl/provider/heroku/generic.rb
dpl-1.8.33.travis.1976.5 lib/dpl/provider/heroku/generic.rb
dpl-1.8.32 lib/dpl/provider/heroku/generic.rb
dpl-1.8.32.travis.1958.5 lib/dpl/provider/heroku/generic.rb
dpl-1.8.32.travis.1957.5 lib/dpl/provider/heroku/generic.rb
dpl-1.8.32.travis.1956.5 lib/dpl/provider/heroku/generic.rb
dpl-1.8.32.travis.1955.5 lib/dpl/provider/heroku/generic.rb
dpl-1.8.32.travis.1950.5 lib/dpl/provider/heroku/generic.rb
dpl-1.8.32.travis.1949.5 lib/dpl/provider/heroku/generic.rb
dpl-1.8.32.travis.1935.5 lib/dpl/provider/heroku/generic.rb
dpl-1.8.32.travis.1901.6 lib/dpl/provider/heroku/generic.rb
dpl-1.8.32.travis.1900.4 lib/dpl/provider/heroku/generic.rb
dpl-1.8.32.travis.1899.3 lib/dpl/provider/heroku/generic.rb
dpl-1.8.31.travis.1897.3 lib/dpl/provider/heroku/generic.rb
dpl-1.8.31.travis.1898.3 lib/dpl/provider/heroku/generic.rb