Sha256: 69ecbf66893ad042f42bff8ee72a9e329875d7b2b70962bc5c4617ba2149e9cf

Contents?: true

Size: 1.73 KB

Versions: 12

Compression:

Stored size: 1.73 KB

Contents

require "httparty"
require "multi_json"

module Bugsnag
  module Capistrano
    ALLOWED_ENV_SETTINGS = %w{BUGSNAG_RELEASE_STAGE BUGSNAG_REPOSITORY BUGSNAG_REVISION BUGSNAG_BRANCH BUGSNAG_API_KEY BUGSNAG_APP_VERSION}

    def self.load_into(configuration)
      configuration.load do
        after "deploy",            "bugsnag:deploy"
        after "deploy:migrations", "bugsnag:deploy"

        namespace :bugsnag do
          desc "Notify Bugsnag that new production code has been deployed"
          task :deploy, :except => { :no_release => true }, :on_error => :continue do
            # Build the rake command
            rake = fetch(:rake, "rake")
            rails_env = fetch(:rails_env, "production")
            rake_command = "cd '#{current_path}' && #{rake} bugsnag:deploy RAILS_ENV=#{rails_env}"

            # Build the new environment to pass through to rake
            new_env = {
              "BUGSNAG_RELEASE_STAGE" => rails_env,
              "BUGSNAG_REVISION" => fetch(:current_revision, nil),
              "BUGSNAG_REPOSITORY" => fetch(:repository, nil),
              "BUGSNAG_BRANCH" => fetch(:branch, nil)
            }.reject {|k,v| v.nil? }

            # Pass through any existing env variables
            ALLOWED_ENV_SETTINGS.each { |opt| new_env[opt] = ENV[opt] if ENV[opt] }

            # Append the env to the rake command
            rake_command << " #{new_env.map{|k,v| "#{k}=#{v}"}.join(" ")}"

            # Run the rake command (only on one server)
            run(rake_command, :once => true)
            
            logger.info "Bugsnag deploy notification complete."
          end
        end
      end
    end
  end
end

Bugsnag::Capistrano.load_into(Capistrano::Configuration.instance) if Capistrano::Configuration.instance

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
bugsnag-1.2.5 lib/bugsnag/capistrano.rb
bugsnag-1.2.4 lib/bugsnag/capistrano.rb
bugsnag-1.2.3 lib/bugsnag/capistrano.rb
bugsnag-1.2.2 lib/bugsnag/capistrano.rb
bugsnag-1.2.1 lib/bugsnag/capistrano.rb
bugsnag-1.2.0 lib/bugsnag/capistrano.rb
bugsnag-1.2.0.beta lib/bugsnag/capistrano.rb
bugsnag-1.1.5 lib/bugsnag/capistrano.rb
bugsnag-1.1.4 lib/bugsnag/capistrano.rb
bugsnag-1.1.3 lib/bugsnag/capistrano.rb
bugsnag-1.1.2 lib/bugsnag/capistrano.rb
bugsnag-1.1.1 lib/bugsnag/capistrano.rb