beanstalk-worker 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +5 -1
- data/Rakefile +2 -2
- data/lib/beanstalk-worker/config.rb +104 -0
- data/lib/beanstalk-worker/logger.rb +42 -0
- data/lib/beanstalk-worker/version_class.rb +52 -0
- data/lib/beanstalk-worker/worker.rb +42 -81
- data/lib/beanstalk-worker.rb +10 -2
- data/spec/beanstalk-worker_spec.rb +10 -35
- data/spec/spec_helper.rb +1 -1
- metadata +70 -4
- data/lib/beanstalk-worker/version.rb +0 -12
data/Gemfile
CHANGED
@@ -4,6 +4,10 @@ source "http://rubygems.org"
|
|
4
4
|
# gem "activesupport", ">= 2.3.5"
|
5
5
|
|
6
6
|
gem 'beanstalk-client'
|
7
|
+
gem "mixlib-log", "~> 1.6.0"
|
8
|
+
gem "mixlib-config", "~> 1.1.2"
|
9
|
+
gem "mixlib-log-json", "~> 0.0.1"
|
10
|
+
gem "yajl-ruby", "~> 1.1.0"
|
7
11
|
|
8
12
|
# Add dependencies to develop your gem here.
|
9
13
|
# Include everything needed to run rake, tests, features, etc.
|
@@ -15,5 +19,5 @@ group :development do
|
|
15
19
|
gem "bundler", "~> 1.3.5"
|
16
20
|
gem "jeweler", "~> 1.8.4"
|
17
21
|
gem "beanstalk-client-rspec", ">= 0"
|
18
|
-
gem (RUBY_VERSION
|
22
|
+
gem (RUBY_VERSION.gsub('.', '').to_i >= 190 ? "simplecov" : "rcov"), ">= 0"
|
19
23
|
end
|
data/Rakefile
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'bundler'
|
5
|
-
require './lib/beanstalk-worker
|
5
|
+
require './lib/beanstalk-worker.rb'
|
6
6
|
|
7
7
|
begin
|
8
8
|
Bundler.setup(:default, :development)
|
@@ -17,7 +17,7 @@ require 'jeweler'
|
|
17
17
|
Jeweler::Tasks.new do |gem|
|
18
18
|
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
19
19
|
gem.name = "beanstalk-worker"
|
20
|
-
gem.version = BeanStalk::Worker::
|
20
|
+
gem.version = BeanStalk::Worker::VERSION
|
21
21
|
gem.homepage = "http://github.com/aia/beanstalk-worker"
|
22
22
|
gem.license = "MIT"
|
23
23
|
gem.summary = %Q{Beanstalkd Worker base class}
|
@@ -0,0 +1,104 @@
|
|
1
|
+
require 'mixlib/config'
|
2
|
+
require 'yajl'
|
3
|
+
require 'yaml'
|
4
|
+
|
5
|
+
# The configuration object for the gemindexer worker.
|
6
|
+
class BeanStalk::Worker
|
7
|
+
class Config
|
8
|
+
extend Mixlib::Config
|
9
|
+
|
10
|
+
# Return the configuration itself upon inspection.
|
11
|
+
def self.inspect
|
12
|
+
configuration.inspect
|
13
|
+
end
|
14
|
+
|
15
|
+
# Loads a given file and passes it to the appropriate parser.
|
16
|
+
#
|
17
|
+
# @raise [ IOError ] Any IO Exceptions that occur.
|
18
|
+
#
|
19
|
+
# @param [ String ] filename The filename to read.
|
20
|
+
# @param [ String ] parser The parser to use.
|
21
|
+
# @param [ String ] environment The environment to read config for.
|
22
|
+
def self.from_file(filename, parser="yaml", environment="development")
|
23
|
+
send("from_file_#{parser}".to_sym, filename, environment)
|
24
|
+
end
|
25
|
+
|
26
|
+
# Loads a given ruby file and runs instance_eval against it
|
27
|
+
# in the context of the current object.
|
28
|
+
#
|
29
|
+
# @raise [ IOError ] Any IO Exceptions that occur.
|
30
|
+
#
|
31
|
+
# @param [ String ] filename The file to read.
|
32
|
+
def self.from_file_ruby(filename, *args)
|
33
|
+
self.instance_eval(IO.read(filename), filename, 1)
|
34
|
+
end
|
35
|
+
|
36
|
+
# Loads a given yaml file and merges the current context
|
37
|
+
# configuration with the updated hash.
|
38
|
+
#
|
39
|
+
# @raise [ IOError ] Any IO Exceptions that occur.
|
40
|
+
# @raise [ Yajl::ParseError ] Raises Yajl Parsing error on improper json.
|
41
|
+
#
|
42
|
+
# @param [ String ] filename The file to read.
|
43
|
+
# @param [ String ] environment The environment to use.
|
44
|
+
def self.from_file_yaml(filename, environment)
|
45
|
+
configuration.merge!(YAML.load_file(filename)[environment])
|
46
|
+
end
|
47
|
+
|
48
|
+
# Loads a given json file and merges the current context
|
49
|
+
# configuration with the updated hash.
|
50
|
+
#
|
51
|
+
# @raise [ IOError ] Any IO Exceptions that occur.
|
52
|
+
# @raise [ Yajl::ParseError ] Raises Yajl Parsing error on improper json.
|
53
|
+
#
|
54
|
+
# @param [ String ] filename The file to read.
|
55
|
+
def self.from_file_json(filename, *args)
|
56
|
+
self.from_stream_json(IO.read(filename))
|
57
|
+
end
|
58
|
+
|
59
|
+
# Loads a given json input and merges the current context
|
60
|
+
# configuration with the updated hash.
|
61
|
+
#
|
62
|
+
# @raise [ IOError ] Any IO Exceptions that occur.
|
63
|
+
# @raise [ Yajl::ParseError ] Raises Yajl Parsing error on improper json.
|
64
|
+
#
|
65
|
+
# @param [ String ] input The json configuration input.
|
66
|
+
def self.from_stream_json(input, *args)
|
67
|
+
parser = Yajl::Parser.new(:symbolize_keys => true)
|
68
|
+
configuration.merge!(parser.parse(input))
|
69
|
+
end
|
70
|
+
|
71
|
+
# Helper method for generation the beanstalk uri
|
72
|
+
#
|
73
|
+
# @return [ String ] The beanstalk uri.
|
74
|
+
def self.beanstalk_uri
|
75
|
+
[self['beanstalk']['server'], self['beanstalk']['port']].join(":")
|
76
|
+
end
|
77
|
+
|
78
|
+
# When you are using ActiveSupport, they monkey-patch 'daemonize' into
|
79
|
+
# Kernel. So while this is basically identical to what method_missing
|
80
|
+
# would do, we pull it up here and get a real method written so that
|
81
|
+
# things get dispatched properly.
|
82
|
+
config_attr_writer :daemonize do |v|
|
83
|
+
configure do |c|
|
84
|
+
c[:daemonize] = v
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
# Enable debug
|
89
|
+
debug false
|
90
|
+
|
91
|
+
# Logging Settings
|
92
|
+
log_level :warn
|
93
|
+
log_location STDOUT
|
94
|
+
log_formatter :json
|
95
|
+
|
96
|
+
# Beanstalk config
|
97
|
+
beanstalk({
|
98
|
+
:server => '127.0.0.1',
|
99
|
+
:port => 11300,
|
100
|
+
:tube => 'worker1'
|
101
|
+
})
|
102
|
+
|
103
|
+
end
|
104
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'logger'
|
2
|
+
require 'mixlib/log'
|
3
|
+
require 'mixlib/log/formatter'
|
4
|
+
require 'mixlib/log/jsonformatter'
|
5
|
+
|
6
|
+
# Beanstalk::Worker's internal logging facility.
|
7
|
+
# Standardized to provide a consistent log format.
|
8
|
+
module BeanStalk::Worker::Log
|
9
|
+
class << self
|
10
|
+
include Mixlib::Log
|
11
|
+
|
12
|
+
# Use Mixlib::Log.init when you want to set up the logger manually. Arguments to this method
|
13
|
+
# get passed directly to Logger.new, so check out the documentation for the standard Logger class
|
14
|
+
# to understand what to do here.
|
15
|
+
#
|
16
|
+
# If this method is called with no arguments, it will log to STDOUT at the :warn level.
|
17
|
+
#
|
18
|
+
# It also configures the Logger instance it creates to use the custom Mixlib::Log::Formatter class.
|
19
|
+
def init(*opts)
|
20
|
+
reset!
|
21
|
+
@logger = logger_for(BeanStalk::Worker::Config[:log_location])
|
22
|
+
if @logger.respond_to?(:formatter=)
|
23
|
+
if BeanStalk::Worker::Config[:log_formatter].eql?(:json)
|
24
|
+
@logger.formatter = Mixlib::Log::JSONFormatter.new()
|
25
|
+
else
|
26
|
+
@logger.formatter = Mixlib::Log::Formatter.new()
|
27
|
+
end
|
28
|
+
end
|
29
|
+
@logger.level = Logger.const_get(
|
30
|
+
BeanStalk::Worker::Config[:log_level].to_s.upcase)
|
31
|
+
@logger
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# Monkeypatch Formatter to allow local show_time updates.
|
36
|
+
class Formatter
|
37
|
+
# Allow enabling and disabling of time with a singleton.
|
38
|
+
def self.show_time=(*args)
|
39
|
+
Mixlib::Log::Formatter.show_time = *args
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module BeanStalk
|
2
|
+
class Worker
|
3
|
+
module Version
|
4
|
+
include Comparable
|
5
|
+
attr_reader :major, :minor, :patch
|
6
|
+
|
7
|
+
def initialize(str="")
|
8
|
+
parse(str)
|
9
|
+
end
|
10
|
+
|
11
|
+
def inspect
|
12
|
+
"#{@major}.#{@minor}.#{@patch}"
|
13
|
+
end
|
14
|
+
|
15
|
+
def to_s
|
16
|
+
"#{@major}.#{@minor}.#{@patch}"
|
17
|
+
end
|
18
|
+
|
19
|
+
def <=>(v)
|
20
|
+
[:major, :minor, :patch].each do |method|
|
21
|
+
ans = (self.send(method) <=> v.send(method))
|
22
|
+
return ans if ans != 0
|
23
|
+
end
|
24
|
+
0
|
25
|
+
end
|
26
|
+
|
27
|
+
def hash
|
28
|
+
to_s.hash
|
29
|
+
end
|
30
|
+
|
31
|
+
# For hash
|
32
|
+
def eql?(other)
|
33
|
+
other.is_a?(Version) && self == other
|
34
|
+
end
|
35
|
+
|
36
|
+
protected
|
37
|
+
|
38
|
+
def parse(str="")
|
39
|
+
@major, @minor, @patch =
|
40
|
+
case str.to_s
|
41
|
+
when /^(\d+)\.(\d+)\.(\d+)$/
|
42
|
+
[ $1.to_i, $2.to_i, $3.to_i ]
|
43
|
+
when /^(\d+)\.(\d+)$/
|
44
|
+
[ $1.to_i, $2.to_i, 0 ]
|
45
|
+
else
|
46
|
+
"'#{str.to_s}' does not match 'x.y.z' or 'x.y'"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -1,90 +1,51 @@
|
|
1
|
-
require 'logger'
|
2
1
|
require 'beanstalk-client'
|
3
2
|
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
class BeanStalk::Worker
|
4
|
+
attr_accessor :config, :log, :beanstalk, :stats
|
5
|
+
|
6
|
+
def initialize(config = {})
|
7
|
+
@config = BeanStalk::Worker::Config
|
8
|
+
@config.merge!(config || {})
|
9
|
+
@logger = BeanStalk::Worker::Log
|
10
|
+
|
11
|
+
@logger.info("Logging started")
|
7
12
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
'server' => "127.0.0.1",
|
12
|
-
'port' => "11300",
|
13
|
-
'tube' => "worker1"
|
14
|
-
}
|
15
|
-
}
|
16
|
-
|
17
|
-
@config['beanstalk'].merge!(config['beanstalk'] || {})
|
18
|
-
|
19
|
-
initialize_logger unless logger
|
20
|
-
|
21
|
-
@log = logger if logger
|
22
|
-
|
23
|
-
@log.error("Logging started")
|
24
|
-
|
25
|
-
@stats = {
|
26
|
-
'received' => 0
|
27
|
-
}
|
28
|
-
|
29
|
-
initialize_beanstalk
|
30
|
-
end
|
13
|
+
@stats = {
|
14
|
+
'received' => 0
|
15
|
+
}
|
31
16
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
17
|
+
initialize_beanstalk
|
18
|
+
end
|
19
|
+
|
20
|
+
def initialize_beanstalk
|
21
|
+
@beanstalk = Beanstalk::Pool.new([
|
22
|
+
BeanStalk::Worker::Config.beanstalk_uri
|
23
|
+
])
|
24
|
+
|
25
|
+
@beanstalk.watch(@config[:beanstalk][:tube])
|
26
|
+
@beanstalk.use(@config[:beanstalk][:tube])
|
27
|
+
@beanstalk.ignore('default')
|
28
|
+
end
|
29
|
+
|
30
|
+
def start(received = -1)
|
31
|
+
while (received == -1) || (@stats['received'] < received)
|
42
32
|
begin
|
43
|
-
|
44
|
-
|
33
|
+
job = @beanstalk.reserve
|
34
|
+
|
35
|
+
@logger.debug("job #{job.inspect}")
|
36
|
+
@logger.debug("job #{job.body.inspect}")
|
37
|
+
|
38
|
+
@stats['received'] += 1
|
39
|
+
|
40
|
+
job.delete if work(job)
|
45
41
|
rescue Exception => e
|
46
|
-
@
|
47
|
-
|
48
|
-
'level' => 'INFO'
|
49
|
-
}
|
50
|
-
@log = Logger.new(@config['log']['file'])
|
51
|
-
@log.level = Logger.const_get(@config['log']['level'])
|
52
|
-
@log.error("Caught a problem with log settings")
|
53
|
-
@log.error("#{e.message}")
|
54
|
-
@log.error("Setting log settings to defaults")
|
42
|
+
@logger.error("Caught exception #{e.to_s}")
|
43
|
+
exit
|
55
44
|
end
|
56
45
|
end
|
57
|
-
|
58
|
-
def initialize_beanstalk
|
59
|
-
@beanstalk = Beanstalk::Pool.new([
|
60
|
-
[@config['beanstalk']['server'], @config['beanstalk']['port']].join(":")
|
61
|
-
])
|
62
|
-
|
63
|
-
@beanstalk.watch(@config['beanstalk']['tube'])
|
64
|
-
@beanstalk.use(@config['beanstalk']['tube'])
|
65
|
-
@beanstalk.ignore('default')
|
66
|
-
end
|
67
|
-
|
68
|
-
def start(received = -1)
|
69
|
-
while (received == -1) || (@stats['received'] < received)
|
70
|
-
begin
|
71
|
-
job = @beanstalk.reserve
|
72
|
-
|
73
|
-
@log.info("job #{job.inspect}")
|
74
|
-
@log.info("job #{job.body.inspect}")
|
75
|
-
|
76
|
-
@stats['received'] += 1
|
77
|
-
|
78
|
-
job.delete if work(job)
|
79
|
-
rescue Exception => e
|
80
|
-
@log.error("Caught exception #{e.to_s}")
|
81
|
-
exit
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
def work(job)
|
87
|
-
return true
|
88
|
-
end
|
89
46
|
end
|
90
|
-
|
47
|
+
|
48
|
+
def work(job)
|
49
|
+
return true
|
50
|
+
end
|
51
|
+
end
|
data/lib/beanstalk-worker.rb
CHANGED
@@ -1,4 +1,12 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
module BeanStalk
|
4
|
+
class Worker
|
5
|
+
VERSION = '0.0.2'
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
require 'beanstalk-worker/version_class'
|
10
|
+
require 'beanstalk-worker/config'
|
11
|
+
require 'beanstalk-worker/logger'
|
12
|
+
require 'beanstalk-worker/worker'
|
@@ -2,24 +2,19 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
require 'beanstalk-client-rspec'
|
5
|
-
require 'pp'
|
6
5
|
|
7
6
|
describe "BeanStalk" do
|
8
7
|
describe "Worker" do
|
9
8
|
before(:each) do
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
'port' => "11300",
|
14
|
-
'tube' => "worker1"
|
15
|
-
}
|
16
|
-
}
|
9
|
+
BeanStalk::Worker::Config[:log_location] = '/dev/null'
|
10
|
+
BeanStalk::Worker::Log.init
|
11
|
+
BeanStalk::Worker::Log.reset!
|
17
12
|
|
18
13
|
@test_config = {
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
14
|
+
:beanstalk => {
|
15
|
+
:server => '10.10.10.10',
|
16
|
+
:port => 11111,
|
17
|
+
:tube => 'testqueue'
|
23
18
|
}
|
24
19
|
}
|
25
20
|
|
@@ -29,39 +24,21 @@ describe "BeanStalk" do
|
|
29
24
|
stub_const("Beanstalk::Pool", Beanstalk::MockPool)
|
30
25
|
end
|
31
26
|
|
32
|
-
it "should initialize with defaults" do
|
33
|
-
@worker = BeanStalk::Worker.new
|
34
|
-
|
35
|
-
@worker.config['beanstalk'].should eql @default_config['beanstalk']
|
36
|
-
end
|
37
|
-
|
38
27
|
it "should initialize with configuration" do
|
39
28
|
@worker = BeanStalk::Worker.new(@test_config)
|
40
|
-
|
41
|
-
@worker.config['beanstalk'].should eql @test_config['beanstalk']
|
29
|
+
@worker.config[:beanstalk].should eql @test_config[:beanstalk]
|
42
30
|
end
|
43
31
|
|
44
32
|
it "should receive queued messages" do
|
45
33
|
@worker = BeanStalk::Worker.new(@test_config)
|
46
|
-
|
47
34
|
@worker.beanstalk.put("foo")
|
48
|
-
|
49
35
|
job = @worker.beanstalk.reserve
|
50
|
-
|
51
36
|
job.body.should eql "foo"
|
52
37
|
end
|
53
38
|
|
54
|
-
it "should log messages" do
|
55
|
-
logger = mock Logger
|
56
|
-
logger.should_receive(:error).with("Logging started")
|
57
|
-
@worker = BeanStalk::Worker.new(@test_config, logger)
|
58
|
-
end
|
59
|
-
|
60
39
|
it "should start" do
|
61
40
|
@worker = BeanStalk::Worker.new(@test_config)
|
62
|
-
|
63
41
|
@worker.beanstalk.put("foo")
|
64
|
-
|
65
42
|
@worker.start(1)
|
66
43
|
end
|
67
44
|
|
@@ -78,7 +55,6 @@ describe "BeanStalk" do
|
|
78
55
|
@worker = BeanStalk::Worker.new(@test_config)
|
79
56
|
|
80
57
|
3.times { @worker.beanstalk.put("foo") }
|
81
|
-
|
82
58
|
expect {
|
83
59
|
@worker.start(4)
|
84
60
|
}.to raise_exception
|
@@ -89,8 +65,7 @@ describe "BeanStalk" do
|
|
89
65
|
it "should start to receive undefined number of messages" do
|
90
66
|
@worker = BeanStalk::Worker.new(@test_config)
|
91
67
|
|
92
|
-
3.times { @worker.beanstalk.put("foo") }
|
93
|
-
|
68
|
+
3.times { @worker.beanstalk.put("foo") }
|
94
69
|
expect {
|
95
70
|
@worker.start(4)
|
96
71
|
}.to raise_exception
|
@@ -98,4 +73,4 @@ describe "BeanStalk" do
|
|
98
73
|
@worker.stats['received'].should eql 3
|
99
74
|
end
|
100
75
|
end
|
101
|
-
end
|
76
|
+
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beanstalk-worker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-08-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: beanstalk-client
|
@@ -27,6 +27,70 @@ dependencies:
|
|
27
27
|
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: mixlib-log
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 1.6.0
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.6.0
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: mixlib-config
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 1.1.2
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.1.2
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: mixlib-log-json
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 0.0.1
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 0.0.1
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: yajl-ruby
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ~>
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 1.1.0
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 1.1.0
|
30
94
|
- !ruby/object:Gem::Dependency
|
31
95
|
name: rspec
|
32
96
|
requirement: !ruby/object:Gem::Requirement
|
@@ -173,7 +237,9 @@ files:
|
|
173
237
|
- features/step_definitions/beanstalk-worker_steps.rb
|
174
238
|
- features/support/env.rb
|
175
239
|
- lib/beanstalk-worker.rb
|
176
|
-
- lib/beanstalk-worker/
|
240
|
+
- lib/beanstalk-worker/config.rb
|
241
|
+
- lib/beanstalk-worker/logger.rb
|
242
|
+
- lib/beanstalk-worker/version_class.rb
|
177
243
|
- lib/beanstalk-worker/worker.rb
|
178
244
|
- spec/beanstalk-worker_spec.rb
|
179
245
|
- spec/spec_helper.rb
|
@@ -192,7 +258,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
192
258
|
version: '0'
|
193
259
|
segments:
|
194
260
|
- 0
|
195
|
-
hash: -
|
261
|
+
hash: -3743712853818560544
|
196
262
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
197
263
|
none: false
|
198
264
|
requirements:
|