Module: Rollbar::Capistrano

Defined in:
lib/rollbar/capistrano.rb

Class Method Summary collapse

Class Method Details

.load_into(configuration) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/rollbar/capistrano.rb', line 5

def self.load_into(configuration)
  configuration.load do
    after 'deploy',            'rollbar:deploy'
    after 'deploy:migrations', 'rollbar:deploy'
    after 'deploy:cold',       'rollbar:deploy'

    namespace :rollbar do
      desc 'Send the deployment notification to Rollbar.'
      task :deploy, :except => { :no_release => true } do
        require 'net/http'
        require 'rubygems'
        require 'json'

        _cset(:rollbar_user)  { ENV['USER'] || ENV['USERNAME'] }
        _cset(:rollbar_env)   { fetch(:rails_env, 'production') }
        _cset(:rollbar_token) { abort("Please specify the Rollbar access token, set :rollbar_token, 'your token'") }

        unless configuration.dry_run
          uri = URI.parse('https://api.rollbar.com/api/1/deploy/')

          params = {
            :local_username => rollbar_user,
            :access_token => rollbar_token,
            :environment => rollbar_env,
            :revision => current_revision
          }

          request = Net::HTTP::Post.new(uri.request_uri)
          request.body = ::JSON.dump(params)

          Net::HTTP.start(uri.host, uri.port, :use_ssl => true) do |http|
            http.request(request)
          end
        end

        logger.info('Rollbar notification complete')
      end
    end
  end
end