simple_resque 1.0.1
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/.rvmrc +1 -0
- data/Gemfile +9 -0
- data/Gemfile.lock +59 -0
- data/Guardfile +9 -0
- data/MIT-LICENSE +20 -0
- data/README.md +40 -0
- data/Rakefile +25 -0
- data/lib/environment_spec.rb +60 -0
- data/lib/simple_resque/version.rb +3 -0
- data/lib/simple_resque.rb +44 -0
- data/simple_resque.gemspec +23 -0
- data/spec/integration/resque_operations_spec.rb +40 -0
- data/spec/lib/simple_resque_spec.rb +29 -0
- data/spec/spec_helper.rb +44 -0
- metadata +90 -0
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm ruby-1.9.2-p180-patched@simple_resque --create
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
simple_resque (1.0.0)
|
5
|
+
resque
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: http://rubygems.org/
|
9
|
+
specs:
|
10
|
+
diff-lcs (1.1.3)
|
11
|
+
growl (1.0.3)
|
12
|
+
guard (0.5.1)
|
13
|
+
thor (~> 0.14.6)
|
14
|
+
guard-rspec (0.4.3)
|
15
|
+
guard (>= 0.4.0)
|
16
|
+
guard-spork (0.2.1)
|
17
|
+
guard (>= 0.2.2)
|
18
|
+
spork (>= 0.8.4)
|
19
|
+
multi_json (1.0.4)
|
20
|
+
rack (1.3.6)
|
21
|
+
rack-protection (1.2.0)
|
22
|
+
rack
|
23
|
+
rb-fsevent (0.4.0)
|
24
|
+
redis (2.2.2)
|
25
|
+
redis-namespace (1.0.3)
|
26
|
+
redis (< 3.0.0)
|
27
|
+
resque (1.19.0)
|
28
|
+
multi_json (~> 1.0)
|
29
|
+
redis-namespace (~> 1.0.2)
|
30
|
+
sinatra (>= 0.9.2)
|
31
|
+
vegas (~> 0.1.2)
|
32
|
+
rspec (2.7.0)
|
33
|
+
rspec-core (~> 2.7.0)
|
34
|
+
rspec-expectations (~> 2.7.0)
|
35
|
+
rspec-mocks (~> 2.7.0)
|
36
|
+
rspec-core (2.7.1)
|
37
|
+
rspec-expectations (2.7.0)
|
38
|
+
diff-lcs (~> 1.1.2)
|
39
|
+
rspec-mocks (2.7.0)
|
40
|
+
sinatra (1.3.2)
|
41
|
+
rack (~> 1.3, >= 1.3.6)
|
42
|
+
rack-protection (~> 1.2)
|
43
|
+
tilt (~> 1.3, >= 1.3.3)
|
44
|
+
spork (0.9.0.rc9)
|
45
|
+
thor (0.14.6)
|
46
|
+
tilt (1.3.3)
|
47
|
+
vegas (0.1.8)
|
48
|
+
rack (>= 1.0.0)
|
49
|
+
|
50
|
+
PLATFORMS
|
51
|
+
ruby
|
52
|
+
|
53
|
+
DEPENDENCIES
|
54
|
+
growl
|
55
|
+
guard-rspec
|
56
|
+
guard-spork
|
57
|
+
rb-fsevent
|
58
|
+
rspec
|
59
|
+
simple_resque!
|
data/Guardfile
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
guard 'spork', :cucumber => false, :test_unit => false, :rspec => true, :rspec_port => 10000 do
|
2
|
+
watch(%r{^spec/spec_helper.rb$})
|
3
|
+
end
|
4
|
+
|
5
|
+
guard 'rspec', all_on_start: true, cli: "--drb --color" do
|
6
|
+
watch(%r{spec/(.*)_spec.rb})
|
7
|
+
watch(%r{lib/(.*)\.rb}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
8
|
+
watch('spec/spec_helper.rb') { "spec" }
|
9
|
+
end
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2012 Mike Subelsky
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
# Simple Resque
|
2
|
+
|
3
|
+
I needed a simple way to queue Resque jobs from a web app where the jobs were defined in a separate "worker"
|
4
|
+
codebase, running completely independently from the web app. Unfortunately,
|
5
|
+
Resque requires you to pass the class name of a job as a constant, when what I
|
6
|
+
really needed was to pass a string which would get turned into a constant class
|
7
|
+
name by the worker codebase. The gem assumes that the queue name is an
|
8
|
+
underscored version of the class name.
|
9
|
+
|
10
|
+
I had to do this enough times that I decided to wrap the idiom in a gem, figuring that over time
|
11
|
+
I'll need to add other simplifications of the Resque API.
|
12
|
+
|
13
|
+
# Installation
|
14
|
+
|
15
|
+
gem install simple_resque
|
16
|
+
|
17
|
+
# Usage
|
18
|
+
|
19
|
+
require 'simple_resque'
|
20
|
+
|
21
|
+
# puts a job on the transmogrifier queue with class "Transmogrifier" and
|
22
|
+
# arguments { id: 3, state: "back_to_calvin" }
|
23
|
+
|
24
|
+
SimpleResque.push("Transmogrifier",id: 3, state: "back_to_calvin")
|
25
|
+
|
26
|
+
# Configuration
|
27
|
+
|
28
|
+
SimpleResque.resque = Resque
|
29
|
+
SimpleResque.resque = MyResqueMock # useful for unit testing
|
30
|
+
|
31
|
+
# Problems? Questions?
|
32
|
+
|
33
|
+
Email <mike@subelsky.com> or file an issue on
|
34
|
+
[GitHub](https://github.com/subelsky/simple_resque).
|
35
|
+
|
36
|
+
Patches are welcome. Thanks!
|
37
|
+
|
38
|
+
# License
|
39
|
+
|
40
|
+
See `MIT-LICENSE` for details.
|
data/Rakefile
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "rubygems"
|
4
|
+
require "bundler"
|
5
|
+
|
6
|
+
desc "release"
|
7
|
+
task :release do
|
8
|
+
unless system("git diff --exit-code")
|
9
|
+
puts "Git not clean. Aborting."
|
10
|
+
`growlnotify -m 'gem release failed'; say 'gem release failed'`
|
11
|
+
end
|
12
|
+
|
13
|
+
require "./lib/simple_resque/version.rb"
|
14
|
+
|
15
|
+
puts "Getting ready to tag and release #{SimpleResque::VERSION} - is this correct?"
|
16
|
+
answer = $stdin.gets.chomp!
|
17
|
+
|
18
|
+
exit if answer =~ /n/i
|
19
|
+
|
20
|
+
`bundle`
|
21
|
+
`git commit -ma "v#{SimpleResque::VERSION}"`
|
22
|
+
`git tag '#{SimpleResque::VERSION}'`
|
23
|
+
`gem build simple_resque.gemspec`
|
24
|
+
`gem push simple_resque-#{SimpleResque::VERSION}`
|
25
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "subelsky_power_tools/environment"
|
3
|
+
|
4
|
+
describe SubelskyPowerTools::Environment do
|
5
|
+
context "extraction of required environment variables" do
|
6
|
+
def conduct_test(val1 = "shaz",val2 = "bot")
|
7
|
+
ENV['_SPT_EE_TEST_VALUE1'] = val1
|
8
|
+
ENV['_SPT_EE_TEST_VALUE2'] = val2
|
9
|
+
SubelskyPowerTools::Environment.extract!(:'_spt_ee_test_value1',:'_spt_ee_test_value2')
|
10
|
+
end
|
11
|
+
|
12
|
+
it "succeeds if all specified variables are non-blank" do
|
13
|
+
expect { conduct_test }.not_to raise_error
|
14
|
+
end
|
15
|
+
|
16
|
+
it "raises error if any specified variable is blank" do
|
17
|
+
expect { conduct_test(" ","bot") }.to raise_error(RuntimeError)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "raises error if any specified variable is zero-width" do
|
21
|
+
expect { conduct_test("shaz","") }.to raise_error(RuntimeError)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "raises error if any specified variable is nil" do
|
25
|
+
expect { conduct_test("",nil) }.to raise_error(RuntimeError)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "returns the value of the extracted variables" do
|
29
|
+
val1, val2 = conduct_test("alpha","beta")
|
30
|
+
val1.should == "alpha"
|
31
|
+
val2.should == "beta"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
context "extraction of optional environment variables" do
|
36
|
+
def conduct_test(val1 = "shaz",val2 = "bot")
|
37
|
+
ENV['_SPT_EE_TEST_VALUE1'] = val1
|
38
|
+
ENV['_SPT_EE_TEST_VALUE2'] = val2
|
39
|
+
SubelskyPowerTools::Environment.extract(:'_spt_ee_test_value1',:'_spt_ee_test_value2')
|
40
|
+
end
|
41
|
+
|
42
|
+
it "succeeds if any specified variable is blank" do
|
43
|
+
expect { conduct_test(" ","bot") }.not_to raise_error
|
44
|
+
end
|
45
|
+
|
46
|
+
it "succeeds if any specified variable is zero-width" do
|
47
|
+
expect { conduct_test("shaz","") }.not_to raise_error
|
48
|
+
end
|
49
|
+
|
50
|
+
it "suceeds if any specified variable is nil" do
|
51
|
+
expect { conduct_test("",nil) }.not_to raise_error
|
52
|
+
end
|
53
|
+
|
54
|
+
it "returns the value of the extracted variables" do
|
55
|
+
val1, val2 = conduct_test(nil,"beta")
|
56
|
+
val1.should == nil
|
57
|
+
val2.should == "beta"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module SimpleResque
|
2
|
+
extend self
|
3
|
+
|
4
|
+
def resque=(r)
|
5
|
+
@resque = r
|
6
|
+
end
|
7
|
+
|
8
|
+
def push(klass,args = nil)
|
9
|
+
queue_name = make_queue_name(klass)
|
10
|
+
resque.push(queue_name, class: klass, args: args)
|
11
|
+
end
|
12
|
+
|
13
|
+
def pop(klass)
|
14
|
+
queue_name = make_queue_name(klass)
|
15
|
+
resque.pop(queue_name)
|
16
|
+
end
|
17
|
+
|
18
|
+
def size(klass)
|
19
|
+
queue_name = make_queue_name(klass)
|
20
|
+
resque.size(queue_name)
|
21
|
+
end
|
22
|
+
|
23
|
+
def clear(klass)
|
24
|
+
queue_name = make_queue_name(klass)
|
25
|
+
resque.remove_queue(queue_name)
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
# this code borrowed from active_support's underscore method
|
31
|
+
def make_queue_name(klass)
|
32
|
+
name = klass.dup
|
33
|
+
name.gsub!(/::/, '/')
|
34
|
+
name.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
|
35
|
+
name.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
|
36
|
+
name.tr!("-", "_")
|
37
|
+
name.downcase!
|
38
|
+
name
|
39
|
+
end
|
40
|
+
|
41
|
+
def resque
|
42
|
+
@resque || Resque
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
$:.unshift(File.dirname(__FILE__))
|
2
|
+
require "lib/simple_resque/version"
|
3
|
+
|
4
|
+
desc = %q{Provides a simpler interface to enqueue Resque jobs between codebases without having to define the Jobs in multiple codebases.}
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{simple_resque}
|
8
|
+
s.version = SimpleResque::VERSION
|
9
|
+
s.authors = ["Mike Subelsky"]
|
10
|
+
s.date = Time.now.utc.strftime("%Y-%m-%d")
|
11
|
+
s.email = %q{mike@subelsky.com}
|
12
|
+
s.extra_rdoc_files = %w(README.md)
|
13
|
+
s.files = `git ls-files`.split("\n")
|
14
|
+
s.homepage = %q{http://github.com/subelsky/simple_resque}
|
15
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
16
|
+
s.require_paths = ["lib"]
|
17
|
+
s.summary = desc
|
18
|
+
s.description = desc
|
19
|
+
s.test_files = `git ls-files spec`.split("\n")
|
20
|
+
s.add_dependency "resque"
|
21
|
+
s.add_development_dependency "rspec"
|
22
|
+
s.license = "MIT"
|
23
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "simple_resque"
|
3
|
+
|
4
|
+
describe "Pushing a job to Resque" do
|
5
|
+
it "suceeds" do
|
6
|
+
expect {
|
7
|
+
SimpleResque.push("TransformVehicle",[5, "autobot"])
|
8
|
+
}.to change { Resque.size(:transform_vehicle) }.from(0).to(1)
|
9
|
+
|
10
|
+
job = Resque.pop(:transform_vehicle)
|
11
|
+
job["class"].should == "TransformVehicle"
|
12
|
+
job["args"].should == [5,"autobot"]
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "Getting queue size from Resque" do
|
17
|
+
it "succeeds" do
|
18
|
+
SimpleResque.clear("BuyStuff")
|
19
|
+
|
20
|
+
expect {
|
21
|
+
SimpleResque.push("BuyStuff")
|
22
|
+
SimpleResque.push("BuyStuff")
|
23
|
+
}.to change { SimpleResque.size("BuyStuff") }.from(0).to(2)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "Popping jobs from Resque" do
|
28
|
+
it "succeeds" do
|
29
|
+
SimpleResque.clear("BuyStuff")
|
30
|
+
SimpleResque.push("Shaz",%q(1 2 3))
|
31
|
+
SimpleResque.pop("Shaz").should == { "class" => "Shaz", "args" => %q(1 2 3) }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "Clearing a Resque queue" do
|
36
|
+
it "succeeds" do
|
37
|
+
Resque.push(:buy_stuff,class: "BuyStuff", args: [])
|
38
|
+
expect { SimpleResque.clear("BuyStuff") }.to change { SimpleResque.size("BuyStuff") }.from(1).to(0)
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "simple_resque"
|
3
|
+
|
4
|
+
describe SimpleResque do
|
5
|
+
let(:resque_stub) { stub("resque") }
|
6
|
+
|
7
|
+
before { SimpleResque.resque = resque_stub }
|
8
|
+
|
9
|
+
it "creates a proper push request from the given parameters" do
|
10
|
+
resque_stub.should_receive(:push).with("transmogrifier",class: "Transmogrifier",args: { id: 3, state: "back_to_calvin" })
|
11
|
+
SimpleResque.push("Transmogrifier",id: 3, state: "back_to_calvin")
|
12
|
+
end
|
13
|
+
|
14
|
+
it "returns the size of a given resque queue" do
|
15
|
+
resque_stub.should_receive(:size).with("count_score").and_return(3)
|
16
|
+
SimpleResque.size("CountScore").should == 3
|
17
|
+
end
|
18
|
+
|
19
|
+
it "pops the top off a given resque queue" do
|
20
|
+
data = { class: "GenerateFireball", args: [:a, :b] }
|
21
|
+
resque_stub.should_receive(:pop).with("generate_fireball").and_return(data)
|
22
|
+
SimpleResque.pop("GenerateFireball").should == data
|
23
|
+
end
|
24
|
+
|
25
|
+
it "clears the queue" do
|
26
|
+
resque_stub.should_receive(:remove_queue).with("howitzer")
|
27
|
+
SimpleResque.clear("Howitzer")
|
28
|
+
end
|
29
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
require "spork"
|
2
|
+
$:.unshift(File.join(File.dirname(__FILE__),"..","lib"))
|
3
|
+
|
4
|
+
Spork.prefork do
|
5
|
+
require "rspec"
|
6
|
+
require "redis"
|
7
|
+
require "resque"
|
8
|
+
|
9
|
+
redis_url = ENV["REDIS_URL"] || "http://localhost:6379"
|
10
|
+
redis_opts = URI.parse(redis_url)
|
11
|
+
|
12
|
+
redis_hash = {
|
13
|
+
host: redis_opts.host,
|
14
|
+
port: redis_opts.port,
|
15
|
+
password: redis_opts.password
|
16
|
+
}
|
17
|
+
|
18
|
+
Resque.redis = Redis.new(redis_hash)
|
19
|
+
|
20
|
+
RSpec.configure do |config|
|
21
|
+
config.mock_with :rspec
|
22
|
+
|
23
|
+
last_gc_run = Time.now
|
24
|
+
|
25
|
+
config.before(:each) do
|
26
|
+
GC.disable
|
27
|
+
end
|
28
|
+
|
29
|
+
config.after(:each) do
|
30
|
+
if Time.now - last_gc_run > 1.0
|
31
|
+
GC.enable
|
32
|
+
GC.start
|
33
|
+
last_gc_run = Time.now
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
require 'rspec/expectations'
|
40
|
+
require 'rspec/core/expecting/with_rspec'
|
41
|
+
end
|
42
|
+
|
43
|
+
Spork.each_run do
|
44
|
+
end
|
metadata
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: simple_resque
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Mike Subelsky
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-01-21 00:00:00.000000000 -05:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: resque
|
17
|
+
requirement: &2153598600 !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: *2153598600
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: rspec
|
28
|
+
requirement: &2153629400 !ruby/object:Gem::Requirement
|
29
|
+
none: false
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: *2153629400
|
37
|
+
description: Provides a simpler interface to enqueue Resque jobs between codebases
|
38
|
+
without having to define the Jobs in multiple codebases.
|
39
|
+
email: mike@subelsky.com
|
40
|
+
executables: []
|
41
|
+
extensions: []
|
42
|
+
extra_rdoc_files:
|
43
|
+
- README.md
|
44
|
+
files:
|
45
|
+
- .rvmrc
|
46
|
+
- Gemfile
|
47
|
+
- Gemfile.lock
|
48
|
+
- Guardfile
|
49
|
+
- MIT-LICENSE
|
50
|
+
- README.md
|
51
|
+
- Rakefile
|
52
|
+
- lib/environment_spec.rb
|
53
|
+
- lib/simple_resque.rb
|
54
|
+
- lib/simple_resque/version.rb
|
55
|
+
- simple_resque.gemspec
|
56
|
+
- spec/integration/resque_operations_spec.rb
|
57
|
+
- spec/lib/simple_resque_spec.rb
|
58
|
+
- spec/spec_helper.rb
|
59
|
+
has_rdoc: true
|
60
|
+
homepage: http://github.com/subelsky/simple_resque
|
61
|
+
licenses:
|
62
|
+
- MIT
|
63
|
+
post_install_message:
|
64
|
+
rdoc_options:
|
65
|
+
- --charset=UTF-8
|
66
|
+
require_paths:
|
67
|
+
- lib
|
68
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
70
|
+
requirements:
|
71
|
+
- - ! '>='
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '0'
|
74
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
75
|
+
none: false
|
76
|
+
requirements:
|
77
|
+
- - ! '>='
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
requirements: []
|
81
|
+
rubyforge_project:
|
82
|
+
rubygems_version: 1.6.2
|
83
|
+
signing_key:
|
84
|
+
specification_version: 3
|
85
|
+
summary: Provides a simpler interface to enqueue Resque jobs between codebases without
|
86
|
+
having to define the Jobs in multiple codebases.
|
87
|
+
test_files:
|
88
|
+
- spec/integration/resque_operations_spec.rb
|
89
|
+
- spec/lib/simple_resque_spec.rb
|
90
|
+
- spec/spec_helper.rb
|