Sha256: 43c0644bcd427679ed9097692a2be4bdb46e7358359e95114049da101800b7a9

Contents?: true

Size: 1.76 KB

Versions: 22

Compression:

Stored size: 1.76 KB

Contents

# frozen_string_literal: true

module Appsignal
  module Integrations
    # @api private
    class Capistrano
      def self.tasks(config)
        config.load do # rubocop:disable Metrics/BlockLength
          after "deploy", "appsignal:deploy"
          after "deploy:migrations", "appsignal:deploy"

          namespace :appsignal do
            task :deploy do
              env = fetch(:appsignal_env,
                fetch(:stage, fetch(:rails_env, fetch(:rack_env, "production"))))
              user = fetch(:appsignal_user, ENV["USER"] || ENV.fetch("USERNAME", nil))
              revision = fetch(:appsignal_revision, fetch(:current_revision))

              appsignal_config = Appsignal::Config.new(
                ENV.fetch("PWD", nil),
                env,
                {},
                Appsignal::Utils::IntegrationLogger.new(StringIO.new)
              ).tap do |c|
                fetch(:appsignal_config, {}).each do |key, value|
                  c[key] = value
                end
                c.validate
              end

              if appsignal_config&.active?
                marker_data = {
                  :revision => revision,
                  :user => user
                }

                marker = Marker.new(marker_data, appsignal_config)
                if config.dry_run
                  puts "Dry run: AppSignal deploy marker not actually sent."
                else
                  marker.transmit
                end
              else
                puts "Not notifying of deploy, config is not active for environment: #{env}"
              end
            end
          end
        end
      end
    end
  end
end

if ::Capistrano::Configuration.instance
  Appsignal::Integrations::Capistrano.tasks(::Capistrano::Configuration.instance)
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
appsignal-3.13.1-java lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb
appsignal-3.13.1 lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb
appsignal-3.13.1.alpha.1-java lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb
appsignal-3.13.1.alpha.1 lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb
appsignal-3.13.0-java lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb
appsignal-3.13.0 lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb
appsignal-3.12.6-java lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb
appsignal-3.12.6 lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb
appsignal-3.12.5-java lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb
appsignal-3.12.5 lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb
appsignal-3.12.4-java lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb
appsignal-3.12.4 lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb
appsignal-3.12.3-java lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb
appsignal-3.12.3 lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb
appsignal-3.12.2-java lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb
appsignal-3.12.2 lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb
appsignal-3.12.1-java lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb
appsignal-3.12.1 lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb
appsignal-3.12.0-java lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb
appsignal-3.12.0 lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb