perform_later 1.0.4 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/object_perform_later.rb +4 -5
- data/lib/perform_later/args_parser.rb +2 -2
- data/lib/perform_later/payload_helper.rb +15 -0
- data/lib/perform_later/version.rb +1 -1
- data/lib/perform_later/workers/active_record/lone_worker.rb +3 -3
- data/lib/perform_later/workers/objects/lone_worker.rb +2 -2
- data/lib/perform_later.rb +2 -1
- data/lib/resque/plugins/later/method.rb +3 -3
- data/spec/lib/perform_later/args_parser_spec.rb +3 -3
- data/spec/lib/perform_later/payload_helper_spec.rb +23 -0
- metadata +4 -1
    
        data/lib/object_perform_later.rb
    CHANGED
    
    | @@ -1,5 +1,4 @@ | |
| 1 1 | 
             
            module ObjectPerformLater
         | 
| 2 | 
            -
             | 
| 3 2 | 
             
              def perform_later(queue, method, *args)
         | 
| 4 3 | 
             
                args = PerformLater::ArgsParser.args_to_resque(args)
         | 
| 5 4 |  | 
| @@ -9,8 +8,8 @@ module ObjectPerformLater | |
| 9 8 |  | 
| 10 9 | 
             
              def perform_later!(queue, method, *args)
         | 
| 11 10 | 
             
                args = PerformLater::ArgsParser.args_to_resque(args)
         | 
| 12 | 
            -
                 | 
| 13 | 
            -
             | 
| 11 | 
            +
                
         | 
| 12 | 
            +
                digest = PerformLater::PayloadHelper.get_digest(self.name, method, args)
         | 
| 14 13 | 
             
                return "EXISTS!" unless Resque.redis.get(digest).blank?
         | 
| 15 14 | 
             
                Resque.redis.set(digest, 'EXISTS')
         | 
| 16 15 |  | 
| @@ -21,9 +20,9 @@ module ObjectPerformLater | |
| 21 20 | 
             
              private 
         | 
| 22 21 | 
             
                def perform_later_enqueue(worker, queue, method, args)
         | 
| 23 22 | 
             
                  if PerformLater.config.enabled?
         | 
| 24 | 
            -
                    Resque::Job.create(queue, worker, self.name, method,  | 
| 23 | 
            +
                    Resque::Job.create(queue, worker, self.name, method, args)
         | 
| 25 24 | 
             
                  else
         | 
| 26 | 
            -
                    self.send(method,  | 
| 25 | 
            +
                    self.send(method, args)
         | 
| 27 26 | 
             
                  end  
         | 
| 28 27 | 
             
                end
         | 
| 29 28 | 
             
            end
         | 
| @@ -8,7 +8,7 @@ module PerformLater | |
| 8 8 | 
             
                YAML_STRING_FORMAT  = /\A---/
         | 
| 9 9 |  | 
| 10 10 | 
             
                def self.args_to_resque(*args)
         | 
| 11 | 
            -
                  args = args.map { |o|
         | 
| 11 | 
            +
                  args = args.flatten.map { |o|
         | 
| 12 12 | 
             
                    case o
         | 
| 13 13 | 
             
                      when ActiveRecord::Base
         | 
| 14 14 | 
             
                        "AR:#{o.class.name}:#{o.id}"
         | 
| @@ -23,7 +23,7 @@ module PerformLater | |
| 23 23 | 
             
                end
         | 
| 24 24 |  | 
| 25 25 | 
             
                def self.args_from_resque(*args)
         | 
| 26 | 
            -
                  args = args.map { |o|
         | 
| 26 | 
            +
                  args = args.flatten.map { |o|
         | 
| 27 27 | 
             
                    if o
         | 
| 28 28 | 
             
                      case o
         | 
| 29 29 | 
             
                      when CLASS_STRING_FORMAT  then $1.constantize
         | 
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            module PerformLater
         | 
| 2 | 
            +
              class PayloadHelper
         | 
| 3 | 
            +
                def self.get_digest(klass, method, *args)
         | 
| 4 | 
            +
                  args = args.flatten
         | 
| 5 | 
            +
                  payload = {:class => klass, :method => method.to_s, :args => args}.to_s
         | 
| 6 | 
            +
                  
         | 
| 7 | 
            +
                  puts payload
         | 
| 8 | 
            +
                  digest = Digest::MD5.hexdigest(payload)
         | 
| 9 | 
            +
                  
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  puts "Digest is: #{digest}"
         | 
| 12 | 
            +
                  digest
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
            end
         | 
| @@ -2,9 +2,9 @@ module PerformLater | |
| 2 2 | 
             
              module Workers
         | 
| 3 3 | 
             
                module ActiveRecord
         | 
| 4 4 | 
             
                  class LoneWorker
         | 
| 5 | 
            -
                    def self.perform(klass, id, method,  | 
| 5 | 
            +
                    def self.perform(klass, id, method, args)
         | 
| 6 6 | 
             
                      # Remove the loner flag from redis
         | 
| 7 | 
            -
                      digest =  | 
| 7 | 
            +
                      digest = PerformLater::PayloadHelper.get_digest(klass, method_name, args)
         | 
| 8 8 | 
             
                      Resque.redis.del(digest)
         | 
| 9 9 |  | 
| 10 10 | 
             
                      args = PerformLater::ArgsParser.args_from_resque(args)
         | 
| @@ -16,4 +16,4 @@ module PerformLater | |
| 16 16 | 
             
                  end
         | 
| 17 17 | 
             
                end
         | 
| 18 18 | 
             
              end
         | 
| 19 | 
            -
            end
         | 
| 19 | 
            +
            end
         | 
| @@ -3,8 +3,8 @@ module PerformLater | |
| 3 3 | 
             
                module Objects
         | 
| 4 4 | 
             
                  class LoneWorker
         | 
| 5 5 | 
             
                    def self.perform(klass_name, method, *args)
         | 
| 6 | 
            -
                      #  | 
| 7 | 
            -
                      digest =  | 
| 6 | 
            +
                      # 
         | 
| 7 | 
            +
                      digest = PerformLater::PayloadHelper.get_digest(klass_name, method, args)
         | 
| 8 8 | 
             
                      Resque.redis.del(digest)
         | 
| 9 9 |  | 
| 10 10 | 
             
                      args = PerformLater::ArgsParser.args_from_resque(args)
         | 
    
        data/lib/perform_later.rb
    CHANGED
    
    | @@ -1,8 +1,9 @@ | |
| 1 1 | 
             
            require 'active_support/dependencies'
         | 
| 2 2 | 
             
            require 'perform_later/version'
         | 
| 3 3 | 
             
            require 'perform_later/config'
         | 
| 4 | 
            -
            require ' | 
| 4 | 
            +
            require 'perform_later/payload_helper'
         | 
| 5 5 | 
             
            require 'perform_later/args_parser'
         | 
| 6 | 
            +
            require 'resque'
         | 
| 6 7 | 
             
            require 'active_record'
         | 
| 7 8 | 
             
            require 'resque_mailer_patch'
         | 
| 8 9 | 
             
            require 'object_perform_later'
         | 
| @@ -12,10 +12,10 @@ module Resque::Plugins::Later::Method | |
| 12 12 | 
             
                    klass          = PerformLater::Workers::ActiveRecord::Worker
         | 
| 13 13 | 
             
                    klass          = PerformLater::Workers::ActiveRecord::LoneWorker if loner
         | 
| 14 14 | 
             
                    args           = PerformLater::ArgsParser.args_to_resque(args)
         | 
| 15 | 
            -
                    digest         =  | 
| 15 | 
            +
                    digest         = PerformLater::PayloadHelper.get_digest(klass, method_name, args)
         | 
| 16 16 |  | 
| 17 17 | 
             
                    if loner
         | 
| 18 | 
            -
                      return "EXISTS!" unless Resque.redis.get(digest).blank?
         | 
| 18 | 
            +
                      return "AR EXISTS!" unless Resque.redis.get(digest).blank?
         | 
| 19 19 | 
             
                      Resque.redis.set(digest, 'EXISTS')
         | 
| 20 20 | 
             
                    end
         | 
| 21 21 |  | 
| @@ -31,7 +31,7 @@ module Resque::Plugins::Later::Method | |
| 31 31 | 
             
                  args = PerformLater::ArgsParser.args_to_resque(args)
         | 
| 32 32 | 
             
                  Resque::Job.create(queue, PerformLater::Workers::ActiveRecord::Worker, self.class.name, self.id, method, *args)
         | 
| 33 33 | 
             
                else
         | 
| 34 | 
            -
                  self.send(method,  | 
| 34 | 
            +
                  self.send(method, args)
         | 
| 35 35 | 
             
                end
         | 
| 36 36 | 
             
              end
         | 
| 37 37 | 
             
            end
         | 
| @@ -13,12 +13,12 @@ describe PerformLater::ArgsParser do | |
| 13 13 | 
             
                end
         | 
| 14 14 |  | 
| 15 15 | 
             
                it "should convert a hash into YAML string so that Resque will be able to JSON convert it" do
         | 
| 16 | 
            -
                  hash = {name: "something", other: "something else"}
         | 
| 16 | 
            +
                  hash = { name: "something", other: "something else" }
         | 
| 17 17 | 
             
                  subject.args_to_resque(hash)[0].class.name.should == "String"
         | 
| 18 18 | 
             
                end
         | 
| 19 19 |  | 
| 20 20 | 
             
                it "should be able to load a yaml from the string and translate it into the same hash again" do
         | 
| 21 | 
            -
                  hash = {name: "something", other: "something else"}
         | 
| 21 | 
            +
                  hash = { name: "something", other: "something else" }
         | 
| 22 22 | 
             
                  yaml = subject.args_to_resque(hash)[0]
         | 
| 23 23 |  | 
| 24 24 | 
             
                  loaded_yaml = YAML.load(yaml)
         | 
| @@ -35,7 +35,7 @@ describe PerformLater::ArgsParser do | |
| 35 35 |  | 
| 36 36 | 
             
              context "args from resque" do
         | 
| 37 37 | 
             
                it "should give me a hash back when I pass a yaml representation of it" do
         | 
| 38 | 
            -
                  hash = {name: "something", other: "something else"} | 
| 38 | 
            +
                  hash = { name: "something", other: "something else" }
         | 
| 39 39 | 
             
                  yaml = hash.to_yaml
         | 
| 40 40 |  | 
| 41 41 | 
             
                  args = subject.args_from_resque(yaml)
         | 
| @@ -0,0 +1,23 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
             | 
| 4 | 
            +
            describe PerformLater::PayloadHelper do
         | 
| 5 | 
            +
              subject { PerformLater::PayloadHelper }
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              describe :get_digest do
         | 
| 8 | 
            +
                it "should o something" do
         | 
| 9 | 
            +
                  user = User.create
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  digest = Digest::MD5.hexdigest({ :class => "DummyClass", 
         | 
| 12 | 
            +
                    :method => :some_method, 
         | 
| 13 | 
            +
                    :args => ["AR:User:#{user.id}"]
         | 
| 14 | 
            +
                    }.to_s)
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  args = PerformLater::ArgsParser.args_to_resque(user)
         | 
| 17 | 
            +
                  puts args
         | 
| 18 | 
            +
                  subject.get_digest("DummyClass", :some_method, args).should == digest
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
             | 
| 23 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: perform_later
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.0. | 
| 4 | 
            +
              version: 1.0.6
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -190,6 +190,7 @@ files: | |
| 190 190 | 
             
            - lib/perform_later.rb
         | 
| 191 191 | 
             
            - lib/perform_later/args_parser.rb
         | 
| 192 192 | 
             
            - lib/perform_later/config.rb
         | 
| 193 | 
            +
            - lib/perform_later/payload_helper.rb
         | 
| 193 194 | 
             
            - lib/perform_later/railtie.rb
         | 
| 194 195 | 
             
            - lib/perform_later/version.rb
         | 
| 195 196 | 
             
            - lib/perform_later/workers/active_record/lone_worker.rb
         | 
| @@ -203,6 +204,7 @@ files: | |
| 203 204 | 
             
            - spec/lib/object_perform_later_spec.rb
         | 
| 204 205 | 
             
            - spec/lib/perform_later/args_parser_spec.rb
         | 
| 205 206 | 
             
            - spec/lib/perform_later/config_spec.rb
         | 
| 207 | 
            +
            - spec/lib/perform_later/payload_helper_spec.rb
         | 
| 206 208 | 
             
            - spec/lib/perform_later_spec.rb
         | 
| 207 209 | 
             
            - spec/lib/resque/plugins/later/method_spec.rb
         | 
| 208 210 | 
             
            - spec/spec_helper.rb
         | 
| @@ -239,6 +241,7 @@ test_files: | |
| 239 241 | 
             
            - spec/lib/object_perform_later_spec.rb
         | 
| 240 242 | 
             
            - spec/lib/perform_later/args_parser_spec.rb
         | 
| 241 243 | 
             
            - spec/lib/perform_later/config_spec.rb
         | 
| 244 | 
            +
            - spec/lib/perform_later/payload_helper_spec.rb
         | 
| 242 245 | 
             
            - spec/lib/perform_later_spec.rb
         | 
| 243 246 | 
             
            - spec/lib/resque/plugins/later/method_spec.rb
         | 
| 244 247 | 
             
            - spec/spec_helper.rb
         |