Sha256: 98f5302d4e710bfa334690568d7a37599057254ed4eaa9d6a2136f11cbb3fd25

Contents?: true

Size: 1.79 KB

Versions: 19

Compression:

Stored size: 1.79 KB

Contents

module RailsPerformance
  module Gems
    class DelayedJobExt

      class Plugin < ::Delayed::Plugin
        callbacks do |lifecycle|
          lifecycle.around(:invoke_job) do |job, *args, &block|
            begin
              now = Time.now
              block.call(job, *args)
              status = 'success'
            rescue Exception => error
              status = 'error'
              raise error
            ensure
              meta_data = RailsPerformance::Gems::DelayedJobExt::Plugin.meta(job.payload_object)
              record    = RailsPerformance::Models::DelayedJobRecord.new(
                jid: job.id,
                duration: (Time.now - now) * 1000,
                datetime: now.strftime(RailsPerformance::FORMAT),
                datetimei: now.to_i,
                source_type: meta_data[0],
                class_name: meta_data[1],
                method_name: meta_data[2],
                status: status
              )
              record.save
            end
          end
        end

        # [source_type, class_name, method_name, duration]
        def self.meta(payload_object)
          if payload_object.is_a?(::Delayed::PerformableMethod)
            if payload_object.object.is_a?(Module)
              [:class_method, payload_object.object.name, payload_object.method_name.to_s]
            else
              [:instance_method, payload_object.object.class.name, payload_object.method_name.to_s]
            end
          else
            [:instance_method, payload_object.class.name, "perform"]
          end
        rescue
          [:unknown, :unknown, :unknown]
        end
      end

      def self.init
        ::Delayed::Worker.plugins += [::RailsPerformance::Gems::DelayedJobExt::Plugin]
      end

    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
rails_performance-1.2.0.alpha4 lib/rails_performance/gems/delayed_job_ext.rb
rails_performance-1.2.0.alpha3 lib/rails_performance/gems/delayed_job_ext.rb
rails_performance-1.2.0.alpha2 lib/rails_performance/gems/delayed_job_ext.rb
rails_performance-1.2.0.alpha1 lib/rails_performance/gems/delayed_job_ext.rb
rails_performance-1.1.0 lib/rails_performance/gems/delayed_job_ext.rb
rails_performance-1.0.5.3 lib/rails_performance/gems/delayed_job_ext.rb
rails_performance-1.0.5.2 lib/rails_performance/gems/delayed_job_ext.rb
rails_performance-1.0.5.1 lib/rails_performance/gems/delayed_job_ext.rb
rails_performance-1.0.5 lib/rails_performance/gems/delayed_job_ext.rb
rails_performance-1.0.4 lib/rails_performance/gems/delayed_job_ext.rb
rails_performance-1.0.3 lib/rails_performance/gems/delayed_job_ext.rb
rails_performance-1.0.2 lib/rails_performance/gems/delayed_job_ext.rb
rails_performance-1.0.1 lib/rails_performance/gems/delayed_job_ext.rb
rails_performance-1.0.0 lib/rails_performance/gems/delayed_job_ext.rb
rails_performance-1.0.0.beta5 lib/rails_performance/gems/delayed_job_ext.rb
rails_performance-1.0.0.beta4 lib/rails_performance/gems/delayed_job_ext.rb
rails_performance-1.0.0.beta3 lib/rails_performance/gems/delayed_job_ext.rb
rails_performance-1.0.0.beta2 lib/rails_performance/gems/delayed_job_ext.rb
rails_performance-1.0.0.beta1 lib/rails_performance/gems/delayed_job_ext.rb