delayed_job 3.0.0.pre4 → 3.0.0
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/README.textile +40 -11
- data/lib/delayed/command.rb +5 -1
- data/lib/delayed/worker.rb +1 -1
- data/lib/delayed_job.rb +11 -12
- data/lib/generators/delayed_job/delayed_job_generator.rb +3 -3
- data/spec/performable_mailer_spec.rb +1 -1
- metadata +33 -54
    
        data/README.textile
    CHANGED
    
    | @@ -14,27 +14,43 @@ It is a direct extraction from Shopify where the job table is responsible for a | |
| 14 14 |  | 
| 15 15 | 
             
            "Follow us on Twitter":https://twitter.com/delayedjob to get updates and notices about new releases.
         | 
| 16 16 |  | 
| 17 | 
            -
             | 
| 18 17 | 
             
            h2. Installation
         | 
| 19 18 |  | 
| 20 | 
            -
            delayed_job  | 
| 19 | 
            +
            delayed_job 3.0.0 only supports Rails 3.0+. See the "2.0 branch":https://github.com/collectiveidea/delayed_job/tree/v2.0 for Rails 2.
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            If you plan to use delayed_job with Active Record, add @delayed_job_active_record@ to your @Gemfile@.
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            <pre>
         | 
| 24 | 
            +
            gem 'delayed_job_active_record'
         | 
| 25 | 
            +
            </pre>
         | 
| 21 26 |  | 
| 22 | 
            -
             | 
| 27 | 
            +
            If you plan to use delayed_job with Mongoid, add @delayed_job_mongoid@ to your @Gemfile@.
         | 
| 23 28 |  | 
| 24 29 | 
             
            <pre>
         | 
| 25 | 
            -
            gem ' | 
| 30 | 
            +
            gem 'delayed_job_mongoid'
         | 
| 26 31 | 
             
            </pre>
         | 
| 27 32 |  | 
| 28 | 
            -
             | 
| 33 | 
            +
            Run @bundle install@ to install the backend and delayed_job gems.
         | 
| 29 34 |  | 
| 30 35 | 
             
            h3. Backends
         | 
| 31 36 |  | 
| 32 37 | 
             
            delayed_job supports multiple backends for storing the job queue. "See the wiki for other backends":http://wiki.github.com/collectiveidea/delayed_job/backends besides Active Record.
         | 
| 33 38 |  | 
| 34 | 
            -
            The default is Active Record, which requires a jobs table.
         | 
| 39 | 
            +
            The default is Active Record, which requires a jobs table. You can create that table by running the following command:
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            <pre>
         | 
| 42 | 
            +
            $ script/rails generate delayed_job:active_record
         | 
| 43 | 
            +
            $ rake db:migrate
         | 
| 44 | 
            +
            </pre>
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            h3. Upgrading from 2.x to 3.0.0 on Active Record
         | 
| 47 | 
            +
             | 
| 48 | 
            +
            Delayed Job 3.0.0 introduces a new column to the delayed_jobs table.
         | 
| 49 | 
            +
             | 
| 50 | 
            +
            If you're upgrading from Delayed Job 2.x, run the upgrade generator to create a migration to add the column.
         | 
| 35 51 |  | 
| 36 52 | 
             
            <pre>
         | 
| 37 | 
            -
            $ script/rails generate delayed_job
         | 
| 53 | 
            +
            $ script/rails generate delayed_job:upgrade
         | 
| 38 54 | 
             
            $ rake db:migrate
         | 
| 39 55 | 
             
            </pre>
         | 
| 40 56 |  | 
| @@ -113,7 +129,11 @@ Remove the @.deliver@ method to make it work. It's not ideal, but it's the best | |
| 113 129 |  | 
| 114 130 | 
             
            h2. Running Jobs
         | 
| 115 131 |  | 
| 116 | 
            -
            @script/delayed_job@ can be used to manage a background process which will start working off jobs. | 
| 132 | 
            +
            @script/delayed_job@ can be used to manage a background process which will start working off jobs.
         | 
| 133 | 
            +
             | 
| 134 | 
            +
            To do so, add @gem "daemons"@ to your @Gemfile@ and make sure you've run `script/rails generate delayed_job`.
         | 
| 135 | 
            +
             | 
| 136 | 
            +
            You can then do the following:
         | 
| 117 137 |  | 
| 118 138 | 
             
            <pre>
         | 
| 119 139 | 
             
            $ RAILS_ENV=production script/delayed_job start
         | 
| @@ -169,7 +189,7 @@ class ParanoidNewsletterJob < NewsletterJob | |
| 169 189 | 
             
              end
         | 
| 170 190 |  | 
| 171 191 | 
             
              def error(job, exception)
         | 
| 172 | 
            -
                 | 
| 192 | 
            +
                Airbrake.notify(exception)
         | 
| 173 193 | 
             
              end
         | 
| 174 194 |  | 
| 175 195 | 
             
              def failure
         | 
| @@ -180,18 +200,19 @@ end | |
| 180 200 |  | 
| 181 201 | 
             
            h2. Gory Details
         | 
| 182 202 |  | 
| 183 | 
            -
            The library  | 
| 203 | 
            +
            The library revolves around a delayed_jobs table which looks as follows:
         | 
| 184 204 |  | 
| 185 205 | 
             
            <pre>
         | 
| 186 206 | 
             
            create_table :delayed_jobs, :force => true do |table|
         | 
| 187 207 | 
             
              table.integer  :priority, :default => 0      # Allows some jobs to jump to the front of the queue
         | 
| 188 208 | 
             
              table.integer  :attempts, :default => 0      # Provides for retries, but still fail eventually.
         | 
| 189 209 | 
             
              table.text     :handler                      # YAML-encoded string of the object that will do work
         | 
| 190 | 
            -
              table.text | 
| 210 | 
            +
              table.text     :last_error                   # reason for last failure (See Note below)
         | 
| 191 211 | 
             
              table.datetime :run_at                       # When to run. Could be Time.zone.now for immediately, or sometime in the future.
         | 
| 192 212 | 
             
              table.datetime :locked_at                    # Set when a client is working on this object
         | 
| 193 213 | 
             
              table.datetime :failed_at                    # Set when all retries have failed (actually, by default, the record is deleted instead)
         | 
| 194 214 | 
             
              table.string   :locked_by                    # Who is working on this object (if locked)
         | 
| 215 | 
            +
              table.string   :queue                        # The name of the queue this job is in
         | 
| 195 216 | 
             
              table.timestamps
         | 
| 196 217 | 
             
            end
         | 
| 197 218 | 
             
            </pre>
         | 
| @@ -230,6 +251,14 @@ h2. Mailing List | |
| 230 251 |  | 
| 231 252 | 
             
            Join us on the "mailing list":http://groups.google.com/group/delayed_job
         | 
| 232 253 |  | 
| 254 | 
            +
            h2. Build Status
         | 
| 255 | 
            +
             | 
| 256 | 
            +
            "!http://travis-ci.org/collectiveidea/delayed_job.png!":http://travis-ci.org/collectiveidea/delayed_job
         | 
| 257 | 
            +
             | 
| 258 | 
            +
            h2. Dependency Status
         | 
| 259 | 
            +
             | 
| 260 | 
            +
            "!https://gemnasium.com/collectiveidea/delayed_job.png?travis!":https://gemnasium.com/collectiveidea/delayed_job
         | 
| 261 | 
            +
             | 
| 233 262 | 
             
            h2. How to contribute
         | 
| 234 263 |  | 
| 235 264 | 
             
            If you find what looks like a bug:
         | 
    
        data/lib/delayed/command.rb
    CHANGED
    
    
    
        data/lib/delayed/worker.rb
    CHANGED
    
    | @@ -37,7 +37,7 @@ module Delayed | |
| 37 37 |  | 
| 38 38 | 
             
                def self.backend=(backend)
         | 
| 39 39 | 
             
                  if backend.is_a? Symbol
         | 
| 40 | 
            -
                    require "delayed/serialization/#{backend}" | 
| 40 | 
            +
                    require "delayed/serialization/#{backend}"
         | 
| 41 41 | 
             
                    require "delayed/backend/#{backend}"
         | 
| 42 42 | 
             
                    backend = "Delayed::Backend::#{backend.to_s.classify}::Job".constantize
         | 
| 43 43 | 
             
                  end
         | 
    
        data/lib/delayed_job.rb
    CHANGED
    
    | @@ -1,22 +1,21 @@ | |
| 1 1 | 
             
            require 'active_support'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require  | 
| 4 | 
            -
            require File.dirname(__FILE__) + '/delayed/performable_method'
         | 
| 2 | 
            +
            require 'delayed/message_sending'
         | 
| 3 | 
            +
            require 'delayed/performable_method'
         | 
| 5 4 |  | 
| 6 5 | 
             
            # PerformableMailer is compatible with ActionMailer 3 (and possibly 3.1)
         | 
| 7 6 | 
             
            if defined?(ActionMailer)
         | 
| 8 7 | 
             
              require 'action_mailer/version'
         | 
| 9 | 
            -
              require  | 
| 8 | 
            +
              require 'delayed/performable_mailer' if 3 == ActionMailer::VERSION::MAJOR
         | 
| 10 9 | 
             
            end
         | 
| 11 10 |  | 
| 12 | 
            -
            require  | 
| 13 | 
            -
            require  | 
| 14 | 
            -
            require  | 
| 15 | 
            -
            require  | 
| 16 | 
            -
            require  | 
| 17 | 
            -
            require  | 
| 18 | 
            -
            require  | 
| 19 | 
            -
            require  | 
| 11 | 
            +
            require 'delayed/yaml_ext'
         | 
| 12 | 
            +
            require 'delayed/lifecycle'
         | 
| 13 | 
            +
            require 'delayed/plugin'
         | 
| 14 | 
            +
            require 'delayed/plugins/clear_locks'
         | 
| 15 | 
            +
            require 'delayed/backend/base'
         | 
| 16 | 
            +
            require 'delayed/worker'
         | 
| 17 | 
            +
            require 'delayed/deserialization_error'
         | 
| 18 | 
            +
            require 'delayed/railtie' if defined?(Rails::Railtie)
         | 
| 20 19 |  | 
| 21 20 | 
             
            Object.send(:include, Delayed::MessageSending)
         | 
| 22 21 | 
             
            Module.send(:include, Delayed::MessageSending::ClassMethods)
         | 
| @@ -1,11 +1,11 @@ | |
| 1 1 | 
             
            require 'rails/generators'
         | 
| 2 2 |  | 
| 3 3 | 
             
            class DelayedJobGenerator < Rails::Generators::Base
         | 
| 4 | 
            -
             | 
| 4 | 
            +
             | 
| 5 5 | 
             
              self.source_paths << File.join(File.dirname(__FILE__), 'templates')
         | 
| 6 | 
            -
             | 
| 6 | 
            +
             | 
| 7 7 | 
             
              def create_script_file
         | 
| 8 8 | 
             
                template 'script', 'script/delayed_job'
         | 
| 9 9 | 
             
                chmod 'script/delayed_job', 0755
         | 
| 10 10 | 
             
              end
         | 
| 11 | 
            -
            end
         | 
| 11 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,15 +1,13 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: delayed_job
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              hash:  | 
| 5 | 
            -
              prerelease:  | 
| 4 | 
            +
              hash: 7
         | 
| 5 | 
            +
              prerelease: 
         | 
| 6 6 | 
             
              segments: 
         | 
| 7 7 | 
             
              - 3
         | 
| 8 8 | 
             
              - 0
         | 
| 9 9 | 
             
              - 0
         | 
| 10 | 
            -
               | 
| 11 | 
            -
              - 4
         | 
| 12 | 
            -
              version: 3.0.0.pre4
         | 
| 10 | 
            +
              version: 3.0.0
         | 
| 13 11 | 
             
            platform: ruby
         | 
| 14 12 | 
             
            authors: 
         | 
| 15 13 | 
             
            - Matt Griffin
         | 
| @@ -22,28 +20,10 @@ autorequire: | |
| 22 20 | 
             
            bindir: bin
         | 
| 23 21 | 
             
            cert_chain: []
         | 
| 24 22 |  | 
| 25 | 
            -
            date: 2011- | 
| 23 | 
            +
            date: 2011-12-30 00:00:00 Z
         | 
| 26 24 | 
             
            dependencies: 
         | 
| 27 25 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 28 | 
            -
               | 
| 29 | 
            -
              prerelease: false
         | 
| 30 | 
            -
              requirement: &id001 !ruby/object:Gem::Requirement 
         | 
| 31 | 
            -
                none: false
         | 
| 32 | 
            -
                requirements: 
         | 
| 33 | 
            -
                - - "="
         | 
| 34 | 
            -
                  - !ruby/object:Gem::Version 
         | 
| 35 | 
            -
                    hash: 3
         | 
| 36 | 
            -
                    segments: 
         | 
| 37 | 
            -
                    - 1
         | 
| 38 | 
            -
                    - 0
         | 
| 39 | 
            -
                    - 10
         | 
| 40 | 
            -
                    version: 1.0.10
         | 
| 41 | 
            -
              version_requirements: *id001
         | 
| 42 | 
            -
              name: daemons
         | 
| 43 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 44 | 
            -
              type: :runtime
         | 
| 45 | 
            -
              prerelease: false
         | 
| 46 | 
            -
              requirement: &id002 !ruby/object:Gem::Requirement 
         | 
| 26 | 
            +
              version_requirements: &id001 !ruby/object:Gem::Requirement 
         | 
| 47 27 | 
             
                none: false
         | 
| 48 28 | 
             
                requirements: 
         | 
| 49 29 | 
             
                - - ~>
         | 
| @@ -53,12 +33,12 @@ dependencies: | |
| 53 33 | 
             
                    - 3
         | 
| 54 34 | 
             
                    - 0
         | 
| 55 35 | 
             
                    version: "3.0"
         | 
| 56 | 
            -
               | 
| 36 | 
            +
              requirement: *id001
         | 
| 37 | 
            +
              type: :runtime
         | 
| 38 | 
            +
              prerelease: false
         | 
| 57 39 | 
             
              name: activesupport
         | 
| 58 40 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 59 | 
            -
               | 
| 60 | 
            -
              prerelease: false
         | 
| 61 | 
            -
              requirement: &id003 !ruby/object:Gem::Requirement 
         | 
| 41 | 
            +
              version_requirements: &id002 !ruby/object:Gem::Requirement 
         | 
| 62 42 | 
             
                none: false
         | 
| 63 43 | 
             
                requirements: 
         | 
| 64 44 | 
             
                - - ~>
         | 
| @@ -68,12 +48,12 @@ dependencies: | |
| 68 48 | 
             
                    - 3
         | 
| 69 49 | 
             
                    - 0
         | 
| 70 50 | 
             
                    version: "3.0"
         | 
| 71 | 
            -
               | 
| 72 | 
            -
              name: activerecord
         | 
| 73 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 51 | 
            +
              requirement: *id002
         | 
| 74 52 | 
             
              type: :development
         | 
| 75 53 | 
             
              prerelease: false
         | 
| 76 | 
            -
               | 
| 54 | 
            +
              name: activerecord
         | 
| 55 | 
            +
            - !ruby/object:Gem::Dependency 
         | 
| 56 | 
            +
              version_requirements: &id003 !ruby/object:Gem::Requirement 
         | 
| 77 57 | 
             
                none: false
         | 
| 78 58 | 
             
                requirements: 
         | 
| 79 59 | 
             
                - - ">="
         | 
| @@ -82,12 +62,12 @@ dependencies: | |
| 82 62 | 
             
                    segments: 
         | 
| 83 63 | 
             
                    - 0
         | 
| 84 64 | 
             
                    version: "0"
         | 
| 85 | 
            -
               | 
| 86 | 
            -
              name: sqlite3
         | 
| 87 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 65 | 
            +
              requirement: *id003
         | 
| 88 66 | 
             
              type: :development
         | 
| 89 67 | 
             
              prerelease: false
         | 
| 90 | 
            -
               | 
| 68 | 
            +
              name: sqlite3
         | 
| 69 | 
            +
            - !ruby/object:Gem::Dependency 
         | 
| 70 | 
            +
              version_requirements: &id004 !ruby/object:Gem::Requirement 
         | 
| 91 71 | 
             
                none: false
         | 
| 92 72 | 
             
                requirements: 
         | 
| 93 73 | 
             
                - - ~>
         | 
| @@ -97,12 +77,12 @@ dependencies: | |
| 97 77 | 
             
                    - 3
         | 
| 98 78 | 
             
                    - 0
         | 
| 99 79 | 
             
                    version: "3.0"
         | 
| 100 | 
            -
               | 
| 101 | 
            -
              name: rails
         | 
| 102 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 80 | 
            +
              requirement: *id004
         | 
| 103 81 | 
             
              type: :development
         | 
| 104 82 | 
             
              prerelease: false
         | 
| 105 | 
            -
               | 
| 83 | 
            +
              name: rails
         | 
| 84 | 
            +
            - !ruby/object:Gem::Dependency 
         | 
| 85 | 
            +
              version_requirements: &id005 !ruby/object:Gem::Requirement 
         | 
| 106 86 | 
             
                none: false
         | 
| 107 87 | 
             
                requirements: 
         | 
| 108 88 | 
             
                - - ~>
         | 
| @@ -112,12 +92,12 @@ dependencies: | |
| 112 92 | 
             
                    - 2
         | 
| 113 93 | 
             
                    - 0
         | 
| 114 94 | 
             
                    version: "2.0"
         | 
| 115 | 
            -
               | 
| 116 | 
            -
              name: rspec
         | 
| 117 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 95 | 
            +
              requirement: *id005
         | 
| 118 96 | 
             
              type: :development
         | 
| 119 97 | 
             
              prerelease: false
         | 
| 120 | 
            -
               | 
| 98 | 
            +
              name: rspec
         | 
| 99 | 
            +
            - !ruby/object:Gem::Dependency 
         | 
| 100 | 
            +
              version_requirements: &id006 !ruby/object:Gem::Requirement 
         | 
| 121 101 | 
             
                none: false
         | 
| 122 102 | 
             
                requirements: 
         | 
| 123 103 | 
             
                - - ">="
         | 
| @@ -126,15 +106,16 @@ dependencies: | |
| 126 106 | 
             
                    segments: 
         | 
| 127 107 | 
             
                    - 0
         | 
| 128 108 | 
             
                    version: "0"
         | 
| 129 | 
            -
               | 
| 109 | 
            +
              requirement: *id006
         | 
| 110 | 
            +
              type: :development
         | 
| 111 | 
            +
              prerelease: false
         | 
| 130 112 | 
             
              name: rake
         | 
| 131 113 | 
             
            description: |-
         | 
| 132 114 | 
             
              Delayed_job (or DJ) encapsulates the common pattern of asynchronously executing longer tasks in the background. It is a direct extraction from Shopify where the job table is responsible for a multitude of core tasks.
         | 
| 133 115 |  | 
| 134 116 | 
             
              This gem is collectiveidea's fork (http://github.com/collectiveidea/delayed_job).
         | 
| 135 117 | 
             
            email: 
         | 
| 136 | 
            -
            -  | 
| 137 | 
            -
            - brandon@opensoul.org
         | 
| 118 | 
            +
            - brian@collectiveidea.com
         | 
| 138 119 | 
             
            executables: []
         | 
| 139 120 |  | 
| 140 121 | 
             
            extensions: []
         | 
| @@ -207,14 +188,12 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 207 188 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement 
         | 
| 208 189 | 
             
              none: false
         | 
| 209 190 | 
             
              requirements: 
         | 
| 210 | 
            -
              - - " | 
| 191 | 
            +
              - - ">="
         | 
| 211 192 | 
             
                - !ruby/object:Gem::Version 
         | 
| 212 | 
            -
                  hash:  | 
| 193 | 
            +
                  hash: 3
         | 
| 213 194 | 
             
                  segments: 
         | 
| 214 | 
            -
                  -  | 
| 215 | 
            -
                   | 
| 216 | 
            -
                  - 1
         | 
| 217 | 
            -
                  version: 1.3.1
         | 
| 195 | 
            +
                  - 0
         | 
| 196 | 
            +
                  version: "0"
         | 
| 218 197 | 
             
            requirements: []
         | 
| 219 198 |  | 
| 220 199 | 
             
            rubyforge_project: 
         |