Skip to content

Commit

Permalink
Extract Mongoid backend into its own plugin. See http://github.com/co…
Browse files Browse the repository at this point in the history
  • Loading branch information
bkeepers committed Sep 4, 2010
1 parent 962afc5 commit c7d16ab
Show file tree
Hide file tree
Showing 8 changed files with 24 additions and 202 deletions.
28 changes: 0 additions & 28 deletions README.textile
Expand Up @@ -62,34 +62,6 @@ MongoMapper.setup(config, Rails.env)
Delayed::Worker.backend = :mongo_mapper
</pre>

h3. Mongoid

You need to create your DelayedJob mongoid model:

<pre>
# app/models/delayed_job.rb
class DelayedJob
include Mongoid::Document
include Mongoid::Timestamps

field :priority, :type => Integer, :default => 0 # Allows some jobs to jump to the front of the queue
field :attempts, :type => Integer, :default => 0 # Provides for retries, but still fail eventually.
field :handler # YAML-encoded string of the object that will do work
field :last_error # reason for last failure (See Note below)
field :run_at, :type => DateTime # When to run. Could be Time.zone.now for immediately, or sometime in the future.
field :locked_at, :type => DateTime # Set when a client is working on this object
field :failed_at, :type => DateTime # Set when all retries have failed (actually, by default, the record is deleted instead)
field :locked_by # Who is working on this object (if locked)
end
</pre>

And set the backend in the initializer:

<pre>
# config/initializers/delayed_job.rb
Delayed::Worker.backend = :mongoid
</pre>

h3. DataMapper

<pre>
Expand Down
98 changes: 0 additions & 98 deletions lib/delayed/backend/mongoid.rb

This file was deleted.

@@ -1,8 +1,4 @@
class NamedJob < Struct.new(:perform)
def display_name
'named_job'
end
end
require File.expand_path('../../../../spec/sample_jobs', __FILE__)

class SuccessfulCallbackJob
def before(job)
Expand Down Expand Up @@ -56,7 +52,7 @@ class << self
end
end

shared_examples_for 'a backend' do
shared_examples_for 'a delayed_job backend' do
def create_job(opts = {})
@backend.create(opts.merge(:payload_object => SimpleJob.new))
end
Expand Down Expand Up @@ -139,16 +135,6 @@ def create_job(opts = {})
job = @backend.new :handler => "--- !ruby/struct:StructThatDoesNotExist {}"
lambda { job.payload_object }.should raise_error(Delayed::Backend::DeserializationError)
end

it "should autoload classes that are unknown at runtime" do
job = @backend.new :handler => "--- !ruby/object:Autoloaded::Clazz {}"
lambda { job.payload_object }.should_not raise_error(Delayed::Backend::DeserializationError)
end

it "should autoload structs that are unknown at runtime" do
job = @backend.new :handler => "--- !ruby/struct:Autoloaded::Struct {}"
lambda { job.payload_object }.should_not raise_error(Delayed::Backend::DeserializationError)
end
end

describe "find_available" do
Expand Down
2 changes: 0 additions & 2 deletions lib/delayed/worker.rb
Expand Up @@ -41,8 +41,6 @@ def self.guess_backend
:active_record
elsif defined?(MongoMapper)
:mongo_mapper
elsif defined?(Mongoid)
:mongoid
else
logger.warn "Could not decide on a backend, defaulting to active_record"
:active_record
Expand Down
41 changes: 0 additions & 41 deletions spec/backend/mongoid_job_spec.rb

This file was deleted.

6 changes: 6 additions & 0 deletions spec/sample_jobs.rb
@@ -1,3 +1,9 @@
class NamedJob < Struct.new(:perform)
def display_name
'named_job'
end
end

class SimpleJob
cattr_accessor :runs; self.runs = 0
def perform; @@runs += 1; end
Expand Down
17 changes: 0 additions & 17 deletions spec/setup/mongoid.rb

This file was deleted.

16 changes: 16 additions & 0 deletions spec/yaml_ext_spec.rb
@@ -0,0 +1,16 @@
require 'spec_helper'

describe YAML do
it "should autoload classes that are unknown at runtime" do
lambda {
YAML.load("--- !ruby/object:Autoloaded::Clazz {}")
}.should_not raise_error
end

it "should autoload structs that are unknown at runtime" do
lambda {
YAML.load("--- !ruby/struct:Autoloaded::Struct {}")
}.should_not raise_error
end

end

0 comments on commit c7d16ab

Please sign in to comment.