hstove/afterparty

View on GitHub
lib/afterparty/jobs.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Afterparty

  module JobDescribers
    attr_accessor :object, :method, :args, :execute_at

    def initialize object, method, *args
      @object = object
      @method = method
      @args = args
    end

    def description
      desc = "Object: #{(@object || "nil")}."
      desc << "Method: #{(@method || "nil")}."
      desc << "Args: #{(@args || "nil")}"
    end
    alias_method :inspect, :description
  end

  class MailerJob
    include JobDescribers

    def run
      @mail = @object.send @method, *@args
      @mail.deliver
    end
  end

  class BasicJob
    include JobDescribers

    def run
      @object.send(@method, *@args)
    end
  end

end