Module: Airbrake::Capistrano

Defined in:
lib/capistrano/git/plugins/airbrake.rb

Class Method Summary collapse

Class Method Details

.load_into(configuration) ⇒ Object



3
4
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
# File 'lib/capistrano/git/plugins/airbrake.rb', line 3

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

    namespace :airbrake do
      desc <<-DESC
        Notify Airbrake of the deployment by running the notification on the REMOTE machine.
          - Run remotely so we use remote API keys, environment, etc.
      DESC
      task :deploy, :except => { :no_release => true } do
        rails_env = fetch(:airbrake_env, fetch(:rails_env, 'production'))
        local_user = ENV['USER'] || ENV['USERNAME']
        executable = RUBY_PLATFORM.downcase.include?('mswin') ? fetch(:rake, 'rake.bat') : fetch(:rake, 'rake')
        notify_command = "cd #{deploy_to}; #{"sudo -u #{sudo_user}" if configuration[:sudo_user] } #{executable} RAILS_ENV=#{rails_env} airbrake:deploy TO=#{rails_env} REPO=#{repository} USER=#{local_user}"
        notify_command << ' DRY_RUN=true' if dry_run
        notify_command << " API_KEY=#{ENV['API_KEY']}" if ENV['API_KEY']
        puts "\n\n### NOTIFY AIRBRAKE: Notifying Airbrake of Deploy (#{notify_command})\n\n"
        if configuration.dry_run
          puts 'DRY RUN: Notification not actually run.'
        else
          result = ''
          run(notify_command, :once => true) { |ch, stream, data| result << data }
        end
        puts 'Airbrake Notification Complete.'
      end
    end
  end
end