Sha256: 28bf7d294613e2e66d23f8ac152bbb3142feb974bdc4260b482eadc5cf4657d9

Contents?: true

Size: 1.84 KB

Versions: 6

Compression:

Stored size: 1.84 KB

Contents

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")
            bugsnag_env  = fetch(:bugsnag_env, rails_env)
            rake_command = "cd '#{current_path}' && RAILS_ENV=#{rails_env} #{rake} bugsnag:deploy"

            # Build the new environment to pass through to rake
            new_env = {
              "BUGSNAG_RELEASE_STAGE" => bugsnag_env,
              "BUGSNAG_REVISION"      => fetch(:current_revision, nil),
              "BUGSNAG_REPOSITORY"    => fetch(:repository, nil),
              "BUGSNAG_BRANCH"        => fetch(:branch, nil),
              "BUGSNAG_API_KEY"       => fetch(:bugsnag_api_key, nil)
            }.reject { |_, 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

6 entries across 6 versions & 1 rubygems

Version Path
bugsnag-1.8.8 lib/bugsnag/capistrano2.rb
bugsnag-1.8.7 lib/bugsnag/capistrano2.rb
bugsnag-1.8.6 lib/bugsnag/capistrano2.rb
bugsnag-1.8.5 lib/bugsnag/capistrano2.rb
bugsnag-1.8.4 lib/bugsnag/capistrano2.rb
bugsnag-1.8.3 lib/bugsnag/capistrano2.rb