quebert 0.0.6 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -4,10 +4,10 @@ gem 'json'
4
4
  gem 'beanstalk-client'
5
5
 
6
6
  group :test do
7
- gem 'rspec'
7
+ gem 'rspec', '1.3.0', :require => nil
8
8
  gem 'ZenTest'
9
9
  gem 'ruby-debug'
10
- gem 'activerecord'
10
+ gem 'activerecord', '2.3.5'
11
11
  gem 'sqlite3-ruby'
12
12
  gem 'autotest-fsevent'
13
13
  end
data/README.rdoc CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  async_observer is great, but is dated and doesn't really support running jobs outside of the async_send idiom. Quebert is an attempt to mix how jobs are run in other popular worker queue frameworks, like resque and dj, with async_observer so that you can have it both ways.
4
4
 
5
+ Quebert is a serious project. Its used in a production environment at Poll Everywhere to handle everything from SMS message processing to account downgrades.
6
+
5
7
  A worker queue framework designed around Beanstalk. Features include:
6
8
 
7
9
  = Features
data/Rakefile CHANGED
@@ -31,8 +31,6 @@ Spec::Rake::SpecTask.new(:rcov) do |spec|
31
31
  spec.rcov = true
32
32
  end
33
33
 
34
- task :spec => :check_dependencies
35
-
36
34
  task :default => :spec
37
35
 
38
36
  require 'rake/rdoctask'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.6
1
+ 0.0.8
@@ -4,7 +4,7 @@ module Quebert
4
4
  # I'm not sure if I want to do this or build serializers per type of object...
5
5
  module ActiveRecord
6
6
  class RecordJob < Job
7
- def perform(record, meth, args)
7
+ def perform(record, meth, *args)
8
8
  record.send(meth, *args)
9
9
  end
10
10
  end
@@ -17,7 +17,7 @@ module Quebert
17
17
  module InstanceMethods
18
18
  # The meat of dealing with ActiveRecord instances.
19
19
  def async_send(meth, *args)
20
- RecordJob.new(self, meth, args).enqueue
20
+ RecordJob.new(self, meth, *args).enqueue
21
21
  end
22
22
  end
23
23
  end
@@ -3,7 +3,7 @@ module Quebert
3
3
  # Perform jobs on instances of classes
4
4
  module Instance
5
5
  class InstanceJob < Job
6
- def perform(klass, init_args, meth, args)
6
+ def perform(klass, init_args, meth, *args)
7
7
  Support.constantize(klass).new(init_args).send(meth, *args)
8
8
  end
9
9
  end
@@ -44,7 +44,7 @@ module Quebert
44
44
  end
45
45
 
46
46
  def async_send(meth, *args)
47
- InstanceJob.new(self.class.name, @_init_args, meth, args).enqueue
47
+ InstanceJob.new(self.class.name, @_init_args, meth, *args).enqueue
48
48
  end
49
49
  end
50
50
  end
@@ -3,7 +3,7 @@ module Quebert
3
3
  # Perform jobs on Object methods (not instances)
4
4
  module Object
5
5
  class ObjectJob < Job
6
- def perform(const, meth, args)
6
+ def perform(const, meth, *args)
7
7
  Support.constantize(const).send(meth, *args)
8
8
  end
9
9
  end
@@ -14,7 +14,7 @@ module Quebert
14
14
 
15
15
  module ClassMethods
16
16
  def async_send(meth, *args)
17
- ObjectJob.new(self.name, meth, args).enqueue
17
+ ObjectJob.new(self.name, meth, *args).enqueue
18
18
  end
19
19
  end
20
20
  end
@@ -5,8 +5,8 @@ module Quebert
5
5
 
6
6
  # Manage jobs on a Beanstalk queue out of process
7
7
  class Beanstalk < Beanstalk::Pool
8
- def put(job)
9
- super job.to_json
8
+ def put(job, *args)
9
+ super job.to_json, *args
10
10
  end
11
11
 
12
12
  def reserve_with_controller
@@ -2,7 +2,7 @@ module Quebert
2
2
  module Backend
3
3
  # Drops jobs on an array in-process.
4
4
  class InProcess < Array
5
- def put(job)
5
+ def put(job, *args)
6
6
  unshift job.to_json
7
7
  end
8
8
 
@@ -4,7 +4,7 @@ module Quebert
4
4
  # or could be used as a fallback if other backends fail to initialize
5
5
  class Sync
6
6
  def put(job, *args)
7
- Controller::Base.new(job).perform
7
+ Controller::Base.new(Job.from_json(job.to_json)).perform
8
8
  end
9
9
  end
10
10
  end
@@ -6,7 +6,19 @@ module Quebert
6
6
 
7
7
  def initialize(beanstalk_job, queue)
8
8
  @beanstalk_job, @queue = beanstalk_job, queue
9
- @job = Job.from_json(beanstalk_job.body)
9
+
10
+ begin
11
+ @job = Job.from_json(beanstalk_job.body)
12
+ rescue Job::Delete
13
+ beanstalk_job.delete
14
+ rescue Job::Release
15
+ beanstalk_job.release nil, @job.delay
16
+ rescue Job::Bury
17
+ beanstalk_job.bury
18
+ rescue Exception => e
19
+ beanstalk_job.bury
20
+ raise e
21
+ end
10
22
  end
11
23
 
12
24
  def perform
@@ -17,7 +29,7 @@ module Quebert
17
29
  rescue Job::Delete
18
30
  beanstalk_job.delete
19
31
  rescue Job::Release
20
- beanstalk_job.release
32
+ beanstalk_job.release nil, @job.delay
21
33
  rescue Job::Bury
22
34
  beanstalk_job.bury
23
35
  rescue Exception => e
data/lib/quebert/job.rb CHANGED
@@ -3,7 +3,12 @@ require 'json'
3
3
  module Quebert
4
4
  class Job
5
5
  attr_reader :args
6
+ attr_accessor :priority, :delay, :ttr
6
7
 
8
+ DEFAULT_JOB_PRIORITY = 65536
9
+ DEFAULT_JOB_DELAY = 0
10
+ DEFAULT_JOB_TTR = 120
11
+
7
12
  NotImplemented = Class.new(StandardError)
8
13
 
9
14
  Action = Class.new(Exception)
@@ -13,6 +18,23 @@ module Quebert
13
18
  Release = Class.new(Action)
14
19
 
15
20
  def initialize(*args)
21
+ opts = args.last.is_a?(::Hash) ? args.pop : nil
22
+
23
+ @priority = DEFAULT_JOB_PRIORITY
24
+ @delay = DEFAULT_JOB_DELAY
25
+ @ttr = DEFAULT_JOB_TTR
26
+
27
+ if opts
28
+ beanstalk_opts = opts.delete(:beanstalk)
29
+ args << opts unless opts.empty?
30
+
31
+ if beanstalk_opts
32
+ @priority = beanstalk_opts[:priority] if beanstalk_opts[:priority]
33
+ @delay = beanstalk_opts[:delay] if beanstalk_opts[:delay]
34
+ @ttr = beanstalk_opts[:ttr] if beanstalk_opts[:ttr]
35
+ end
36
+ end
37
+
16
38
  @args = args.dup.freeze
17
39
  end
18
40
 
@@ -26,7 +48,7 @@ module Quebert
26
48
  end
27
49
 
28
50
  def enqueue
29
- self.class.backend.put self
51
+ self.class.backend.put self, @priority, @delay, @ttr
30
52
  end
31
53
 
32
54
  def to_json
@@ -6,13 +6,20 @@ module Quebert
6
6
  def self.serialize(job)
7
7
  {
8
8
  'job' => job.class.name,
9
- 'args' => serialize_args(job.args)
9
+ 'args' => serialize_args(job.args),
10
+ 'priority' => job.priority,
11
+ 'delay' => job.delay,
12
+ 'ttr' => job.ttr
10
13
  }
11
14
  end
12
15
 
13
16
  def self.deserialize(hash)
14
17
  hash = Support.stringify_keys(hash)
15
- Support.constantize(hash['job']).new(*deserialize_args(hash['args']))
18
+ job = Support.constantize(hash['job']).new(*deserialize_args(hash['args']))
19
+ job.priority = hash['priority']
20
+ job.delay = hash['delay']
21
+ job.ttr = hash['ttr']
22
+ job
16
23
  end
17
24
 
18
25
  private
@@ -58,7 +65,7 @@ module Quebert
58
65
  hash = Support.stringify_keys(hash)
59
66
  model = Support.constantize(hash.delete('model'))
60
67
  if attrs = Support.stringify_keys(hash.delete('attributes'))
61
- if id = hash.delete('id')
68
+ if id = attrs.delete('id')
62
69
  # This has been persisited, so just find it from the db
63
70
  model.find(id)
64
71
  else
@@ -15,7 +15,8 @@ module Quebert
15
15
  logger.info "Worker pid##{Process.pid} started with #{backend.class.name} backend"
16
16
  while controller = backend.reserve do
17
17
  begin
18
- log controller.job, "performing with args #{controller.job.args.inspect}"
18
+ log controller.job, "performing with args #{controller.job.args.inspect}."
19
+ log controller.job, "Priority: #{controller.beanstalk_job.pri}, Delay: #{controller.beanstalk_job.delay}, TTR: #{controller.beanstalk_job.ttr}" if controller.respond_to?(:beanstalk_job)
19
20
  controller.perform
20
21
  log controller.job, "complete"
21
22
  rescue Exception => e
data/quebert.gemspec CHANGED
@@ -1,88 +1,86 @@
1
1
  # Generated by jeweler
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{quebert}
8
- s.version = "0.0.6"
8
+ s.version = "0.0.8"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Brad Gessler"]
12
- s.date = %q{2010-10-11}
12
+ s.date = %q{2011-09-16}
13
13
  s.default_executable = %q{quebert}
14
14
  s.description = %q{A worker queue framework built around beanstalkd}
15
15
  s.email = %q{brad@bradgessler.com}
16
16
  s.executables = ["quebert"]
17
17
  s.extra_rdoc_files = [
18
18
  "LICENSE",
19
- "README.rdoc"
19
+ "README.rdoc"
20
20
  ]
21
21
  s.files = [
22
22
  ".document",
23
- ".gitignore",
24
- "Gemfile",
25
- "LICENSE",
26
- "README.rdoc",
27
- "Rakefile",
28
- "VERSION",
29
- "bin/quebert",
30
- "lib/quebert.rb",
31
- "lib/quebert/async_sender.rb",
32
- "lib/quebert/async_sender/active_record.rb",
33
- "lib/quebert/async_sender/class.rb",
34
- "lib/quebert/async_sender/instance.rb",
35
- "lib/quebert/async_sender/object.rb",
36
- "lib/quebert/backend.rb",
37
- "lib/quebert/backend/beanstalk.rb",
38
- "lib/quebert/backend/in_process.rb",
39
- "lib/quebert/backend/sync.rb",
40
- "lib/quebert/command_line_runner.rb",
41
- "lib/quebert/configuration.rb",
42
- "lib/quebert/controller.rb",
43
- "lib/quebert/controller/base.rb",
44
- "lib/quebert/controller/beanstalk.rb",
45
- "lib/quebert/job.rb",
46
- "lib/quebert/serializer.rb",
47
- "lib/quebert/support.rb",
48
- "lib/quebert/support/pid_file.rb",
49
- "lib/quebert/support/registry.rb",
50
- "lib/quebert/worker.rb",
51
- "quebert.gemspec",
52
- "spec/async_sender_spec.rb",
53
- "spec/backend_spec.rb",
54
- "spec/command_line_runner_spec.rb",
55
- "spec/configuration_spec.rb",
56
- "spec/consumer_spec.rb",
57
- "spec/job_spec.rb",
58
- "spec/quebert_spec.rb",
59
- "spec/serializer_spec.rb",
60
- "spec/spec.opts",
61
- "spec/spec_helper.rb",
62
- "spec/support/active_record.rb",
63
- "spec/support/jobs.rb",
64
- "spec/support_spec.rb",
65
- "spec/worker_spec.rb"
23
+ "Gemfile",
24
+ "LICENSE",
25
+ "README.rdoc",
26
+ "Rakefile",
27
+ "VERSION",
28
+ "bin/quebert",
29
+ "lib/quebert.rb",
30
+ "lib/quebert/async_sender.rb",
31
+ "lib/quebert/async_sender/active_record.rb",
32
+ "lib/quebert/async_sender/class.rb",
33
+ "lib/quebert/async_sender/instance.rb",
34
+ "lib/quebert/async_sender/object.rb",
35
+ "lib/quebert/backend.rb",
36
+ "lib/quebert/backend/beanstalk.rb",
37
+ "lib/quebert/backend/in_process.rb",
38
+ "lib/quebert/backend/sync.rb",
39
+ "lib/quebert/command_line_runner.rb",
40
+ "lib/quebert/configuration.rb",
41
+ "lib/quebert/controller.rb",
42
+ "lib/quebert/controller/base.rb",
43
+ "lib/quebert/controller/beanstalk.rb",
44
+ "lib/quebert/job.rb",
45
+ "lib/quebert/serializer.rb",
46
+ "lib/quebert/support.rb",
47
+ "lib/quebert/support/pid_file.rb",
48
+ "lib/quebert/support/registry.rb",
49
+ "lib/quebert/worker.rb",
50
+ "quebert.gemspec",
51
+ "spec/async_sender_spec.rb",
52
+ "spec/backend_spec.rb",
53
+ "spec/command_line_runner_spec.rb",
54
+ "spec/configuration_spec.rb",
55
+ "spec/consumer_spec.rb",
56
+ "spec/job_spec.rb",
57
+ "spec/quebert_spec.rb",
58
+ "spec/serializer_spec.rb",
59
+ "spec/spec.opts",
60
+ "spec/spec_helper.rb",
61
+ "spec/support/active_record.rb",
62
+ "spec/support/jobs.rb",
63
+ "spec/support_spec.rb",
64
+ "spec/worker_spec.rb"
66
65
  ]
67
66
  s.homepage = %q{http://github.com/bradgessler/quebert}
68
- s.rdoc_options = ["--charset=UTF-8"]
69
67
  s.require_paths = ["lib"]
70
68
  s.rubygems_version = %q{1.3.7}
71
69
  s.summary = %q{A worker queue framework built around beanstalkd}
72
70
  s.test_files = [
73
71
  "spec/async_sender_spec.rb",
74
- "spec/backend_spec.rb",
75
- "spec/command_line_runner_spec.rb",
76
- "spec/configuration_spec.rb",
77
- "spec/consumer_spec.rb",
78
- "spec/job_spec.rb",
79
- "spec/quebert_spec.rb",
80
- "spec/serializer_spec.rb",
81
- "spec/spec_helper.rb",
82
- "spec/support/active_record.rb",
83
- "spec/support/jobs.rb",
84
- "spec/support_spec.rb",
85
- "spec/worker_spec.rb"
72
+ "spec/backend_spec.rb",
73
+ "spec/command_line_runner_spec.rb",
74
+ "spec/configuration_spec.rb",
75
+ "spec/consumer_spec.rb",
76
+ "spec/job_spec.rb",
77
+ "spec/quebert_spec.rb",
78
+ "spec/serializer_spec.rb",
79
+ "spec/spec_helper.rb",
80
+ "spec/support/active_record.rb",
81
+ "spec/support/jobs.rb",
82
+ "spec/support_spec.rb",
83
+ "spec/worker_spec.rb"
86
84
  ]
87
85
 
88
86
  if s.respond_to? :specification_version then
@@ -90,15 +88,21 @@ Gem::Specification.new do |s|
90
88
  s.specification_version = 3
91
89
 
92
90
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
91
+ s.add_runtime_dependency(%q<json>, [">= 0"])
92
+ s.add_runtime_dependency(%q<beanstalk-client>, [">= 0"])
93
93
  s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
94
94
  s.add_runtime_dependency(%q<json>, [">= 0"])
95
95
  s.add_runtime_dependency(%q<beanstalk-client>, [">= 0"])
96
96
  else
97
+ s.add_dependency(%q<json>, [">= 0"])
98
+ s.add_dependency(%q<beanstalk-client>, [">= 0"])
97
99
  s.add_dependency(%q<rspec>, [">= 1.2.9"])
98
100
  s.add_dependency(%q<json>, [">= 0"])
99
101
  s.add_dependency(%q<beanstalk-client>, [">= 0"])
100
102
  end
101
103
  else
104
+ s.add_dependency(%q<json>, [">= 0"])
105
+ s.add_dependency(%q<beanstalk-client>, [">= 0"])
102
106
  s.add_dependency(%q<rspec>, [">= 1.2.9"])
103
107
  s.add_dependency(%q<json>, [">= 0"])
104
108
  s.add_dependency(%q<beanstalk-client>, [">= 0"])
@@ -79,4 +79,10 @@ describe AsyncSender::ActiveRecord do
79
79
  @q.reserve.perform.should eql(email)
80
80
  end
81
81
 
82
+ it "should async_send and successfully serialize param object" do
83
+ user = User.new(:first_name => 'Brad')
84
+ user2 = User.new(:first_name => 'Steel')
85
+ user.async_send(:email, user2)
86
+ @q.reserve.perform.first_name.should eql('Steel')
87
+ end
82
88
  end
@@ -38,6 +38,15 @@ describe Controller::Beanstalk do
38
38
  @q.peek_buried.should_not be_nil
39
39
  end
40
40
 
41
+ it "should bury an AR job if an exception occurs deserializing it" do
42
+ @user = User.new(:first_name => "John", :last_name => "Doe", :email => "jdoe@gmail.com")
43
+ @user.id = 1
44
+ @q.put Serializer::ActiveRecord.serialize(@user)
45
+ @q.peek_ready.should_not be_nil
46
+ lambda{ @q.reserve.perform }.should raise_exception
47
+ @q.peek_buried.should_not be_nil
48
+ end
49
+
41
50
  context "job actions" do
42
51
  it "should delete job" do
43
52
  @q.put DeleteJob.new
data/spec/job_spec.rb CHANGED
@@ -55,6 +55,35 @@ describe Quebert::Job do
55
55
  Adder.new(1,2,3).enqueue
56
56
  }.should change(@q, :size).by(1)
57
57
  end
58
- end
59
-
58
+
59
+ context "beanstalk backend" do
60
+ before(:all) do
61
+ Quebert.serializers.register 'ActiveRecord::Base', Serializer::ActiveRecord
62
+
63
+ @q = Backend::Beanstalk.new('localhost:11300','quebert-test')
64
+
65
+ Quebert::AsyncSender::ActiveRecord::RecordJob.backend = @q
66
+ Quebert::AsyncSender::Object::ObjectJob.backend = @q
67
+
68
+ @q.drain!
69
+ end
70
+
71
+ it "should enqueue and honor beanstalk options" do
72
+ user = User.new(:first_name => "Steel")
73
+ user.async_send(:email, "somebody", nil, nil, :beanstalk => {:priority => 1, :delay => 2, :ttr => 300})
74
+ job = @q.reserve
75
+ job.beanstalk_job.pri.should eql(1)
76
+ job.beanstalk_job.delay.should eql(2)
77
+ job.beanstalk_job.ttr.should eql(300)
78
+ end
79
+
80
+ it "should enqueue and honor beanstalk options" do
81
+ User.async_send(:emailizer, "somebody", nil, nil, :beanstalk => {:priority => 1, :delay => 2, :ttr => 300})
82
+ job = @q.reserve
83
+ job.beanstalk_job.pri.should eql(1)
84
+ job.beanstalk_job.delay.should eql(2)
85
+ job.beanstalk_job.ttr.should eql(300)
86
+ end
87
+ end
88
+ end
60
89
  end
@@ -16,6 +16,7 @@ describe Serializer::ActiveRecord do
16
16
  it "should deserialize" do
17
17
  u = Serializer::ActiveRecord.deserialize(Serializer::ActiveRecord.serialize(@user))
18
18
  u.first_name.should eql('Tom')
19
+ u.id.should eql(@user.id)
19
20
  end
20
21
  end
21
22
 
@@ -40,7 +41,7 @@ end
40
41
 
41
42
  describe Serializer::Job do
42
43
  before(:all) do
43
- @args = [100, User.new(:first_name => 'Brad')]
44
+ @args = [100, User.new(:first_name => 'Brad'), {:beanstalk => {:priority => 1, :delay => 2, :ttr => 300}}]
44
45
  @job = Job.new(*@args)
45
46
  end
46
47
 
@@ -50,11 +51,17 @@ describe Serializer::Job do
50
51
  h['args'][0]['payload'].should eql(100)
51
52
  h['args'][1]['payload'].should eql(Serializer::ActiveRecord.serialize(@args[1]))
52
53
  h['args'][1]['serializer'].should eql('Quebert::Serializer::ActiveRecord')
54
+ h['priority'].should eql(1)
55
+ h['delay'].should eql(2)
56
+ h['ttr'].should eql(300)
53
57
  end
54
58
 
55
59
  it "should deserialize job" do
56
60
  job = Serializer::Job.deserialize(Serializer::Job.serialize(@job))
57
61
  job.args[0].should eql(100)
58
62
  job.args[1].first_name.should eql('Brad')
63
+ job.delay.should eql(2)
64
+ job.priority.should eql(1)
65
+ job.ttr.should eql(300)
59
66
  end
60
67
  end
@@ -23,4 +23,8 @@ class User < ActiveRecord::Base
23
23
  def self.emailizer(address)
24
24
  address
25
25
  end
26
+
27
+ def email(address)
28
+ address
29
+ end
26
30
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quebert
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 15
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 6
10
- version: 0.0.6
9
+ - 8
10
+ version: 0.0.8
11
11
  platform: ruby
12
12
  authors:
13
13
  - Brad Gessler
@@ -15,13 +15,39 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-11 00:00:00 -07:00
18
+ date: 2011-09-16 00:00:00 -07:00
19
19
  default_executable: quebert
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: rspec
23
- prerelease: false
24
22
  requirement: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ hash: 3
28
+ segments:
29
+ - 0
30
+ version: "0"
31
+ type: :runtime
32
+ name: json
33
+ prerelease: false
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ requirement: &id002 !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ hash: 3
42
+ segments:
43
+ - 0
44
+ version: "0"
45
+ type: :runtime
46
+ name: beanstalk-client
47
+ prerelease: false
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ requirement: &id003 !ruby/object:Gem::Requirement
25
51
  none: false
26
52
  requirements:
27
53
  - - ">="
@@ -33,11 +59,11 @@ dependencies:
33
59
  - 9
34
60
  version: 1.2.9
35
61
  type: :development
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: json
62
+ name: rspec
39
63
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
64
+ version_requirements: *id003
65
+ - !ruby/object:Gem::Dependency
66
+ requirement: &id004 !ruby/object:Gem::Requirement
41
67
  none: false
42
68
  requirements:
43
69
  - - ">="
@@ -47,11 +73,11 @@ dependencies:
47
73
  - 0
48
74
  version: "0"
49
75
  type: :runtime
50
- version_requirements: *id002
51
- - !ruby/object:Gem::Dependency
52
- name: beanstalk-client
76
+ name: json
53
77
  prerelease: false
54
- requirement: &id003 !ruby/object:Gem::Requirement
78
+ version_requirements: *id004
79
+ - !ruby/object:Gem::Dependency
80
+ requirement: &id005 !ruby/object:Gem::Requirement
55
81
  none: false
56
82
  requirements:
57
83
  - - ">="
@@ -61,7 +87,9 @@ dependencies:
61
87
  - 0
62
88
  version: "0"
63
89
  type: :runtime
64
- version_requirements: *id003
90
+ name: beanstalk-client
91
+ prerelease: false
92
+ version_requirements: *id005
65
93
  description: A worker queue framework built around beanstalkd
66
94
  email: brad@bradgessler.com
67
95
  executables:
@@ -73,7 +101,6 @@ extra_rdoc_files:
73
101
  - README.rdoc
74
102
  files:
75
103
  - .document
76
- - .gitignore
77
104
  - Gemfile
78
105
  - LICENSE
79
106
  - README.rdoc
@@ -121,8 +148,8 @@ homepage: http://github.com/bradgessler/quebert
121
148
  licenses: []
122
149
 
123
150
  post_install_message:
124
- rdoc_options:
125
- - --charset=UTF-8
151
+ rdoc_options: []
152
+
126
153
  require_paths:
127
154
  - lib
128
155
  required_ruby_version: !ruby/object:Gem::Requirement
data/.gitignore DELETED
@@ -1,22 +0,0 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
- *.swp
15
-
16
- ## PROJECT::GENERAL
17
- coverage
18
- rdoc
19
- pkg
20
- Gemfile.lock
21
-
22
- ## PROJECT::SPECIFIC