resque-logger 0.0.1 → 0.1.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.md +4 -0
- data/lib/resque/plugins/logger.rb +22 -1
- data/lib/resque/setup.rb +1 -5
- data/lib/resque_logger/version.rb +1 -1
- data/resque-logger.gemspec +8 -7
- data/spec/lib/resque/plugins/logger_spec.rb +89 -6
- metadata +27 -15
- data/lib/resque/plugins/logger/factory.rb +0 -49
- data/spec/lib/resque/plugins/logger/factory_spec.rb +0 -69
data/README.md
CHANGED
@@ -7,7 +7,28 @@ module Resque
|
|
7
7
|
# Returns a logger instance based on queue name.
|
8
8
|
#
|
9
9
|
def logger
|
10
|
-
|
10
|
+
@logger ||= create_logger
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
#
|
16
|
+
# Creates a new instance of logger given a queue name, retrieving
|
17
|
+
# configuration from Resque.logger.
|
18
|
+
#
|
19
|
+
def create_logger
|
20
|
+
config = Resque.logger
|
21
|
+
log_path = config[:folder]
|
22
|
+
class_name = config[:class_name]
|
23
|
+
class_args = config[:class_args]
|
24
|
+
|
25
|
+
file_path = File.join log_path, "#{@queue}.log"
|
26
|
+
|
27
|
+
logger = class_name.new file_path, *class_args
|
28
|
+
logger.level = config[:level] if config[:level]
|
29
|
+
logger.formatter = config[:formatter] if config[:formatter]
|
30
|
+
|
31
|
+
logger
|
11
32
|
end
|
12
33
|
end
|
13
34
|
end
|
data/lib/resque/setup.rb
CHANGED
data/resque-logger.gemspec
CHANGED
@@ -1,17 +1,18 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
|
3
|
-
|
2
|
+
|
3
|
+
$:.push File.expand_path('../lib', __FILE__)
|
4
|
+
require 'resque_logger/version'
|
4
5
|
|
5
6
|
Gem::Specification.new do |s|
|
6
|
-
s.name =
|
7
|
+
s.name = 'resque-logger'
|
7
8
|
s.version = ResqueLogger::VERSION
|
8
|
-
s.authors = [
|
9
|
-
s.email = [
|
10
|
-
s.homepage =
|
9
|
+
s.authors = ['Marcelo Correia Pinheiro']
|
10
|
+
s.email = ['salizzar@gmail.com']
|
11
|
+
s.homepage = 'https://github.com/salizzar/resque-logger'
|
11
12
|
s.summary = %q{A Resque plugin to provides logger for each worker}
|
12
13
|
s.description = %q{A simple mechanism to create custom log files based on queue names of Resque workers.}
|
13
14
|
|
14
|
-
s.rubyforge_project =
|
15
|
+
s.rubyforge_project = 'resque-logger'
|
15
16
|
|
16
17
|
s.files = `git ls-files`.split("\n")
|
17
18
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
@@ -3,15 +3,98 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
describe Resque::Plugins::Logger do
|
6
|
-
|
6
|
+
@worker_queue = :worker_queue
|
7
7
|
|
8
|
-
|
8
|
+
class ResqueWorker
|
9
|
+
extend Resque::Plugins::Logger
|
9
10
|
|
10
|
-
|
11
|
+
@queue = @worker_queue
|
11
12
|
|
12
|
-
|
13
|
-
|
14
|
-
|
13
|
+
def self.perform(args = {})
|
14
|
+
logger.info 'It works!'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
let(:file_path) { File.join config[:folder], "#{@worker_queue}.log" }
|
19
|
+
let(:logger_mock) { mock Logger }
|
20
|
+
|
21
|
+
let(:config) do
|
22
|
+
{
|
23
|
+
folder: '/path/to/your/log/folder',
|
24
|
+
class_name: Logger,
|
25
|
+
class_args: [ 'daily', 1024 ],
|
26
|
+
level: Logger::INFO,
|
27
|
+
formatter: Logger::Formatter.new,
|
28
|
+
}
|
29
|
+
end
|
30
|
+
|
31
|
+
before :each do
|
32
|
+
Resque.stub(:logger).and_return(config)
|
33
|
+
logger_mock.should_receive(:info).any_number_of_times
|
34
|
+
|
35
|
+
# FIXME: find a better way to test
|
36
|
+
ResqueWorker.instance_variable_set '@logger', nil
|
37
|
+
end
|
38
|
+
|
39
|
+
describe 'getting a logger based on queue' do
|
40
|
+
before :each do
|
41
|
+
config.delete :level
|
42
|
+
config.delete :formatter
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'creates a logger based on configuration' do
|
46
|
+
Logger.should_receive(:new).with(file_path, config[:class_args].first, config[:class_args].last).and_return(logger_mock)
|
47
|
+
|
48
|
+
ResqueWorker.perform
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'returns a previously created logger' do
|
52
|
+
Logger.stub(:new).and_return(logger_mock)
|
53
|
+
ResqueWorker.perform
|
54
|
+
|
55
|
+
Logger.should_not_receive(:new)
|
56
|
+
ResqueWorker.perform
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'accepts a logger without additional args' do
|
60
|
+
config.delete :class_args
|
61
|
+
|
62
|
+
Logger.should_receive(:new).with(file_path).and_return(logger_mock)
|
63
|
+
|
64
|
+
ResqueWorker.perform
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe 'setting logger options from configuration' do
|
69
|
+
before :each do
|
70
|
+
Logger.stub(:new).and_return(logger_mock)
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'configures logger level if informed' do
|
74
|
+
config.delete :formatter
|
75
|
+
|
76
|
+
logger_mock.should_receive(:level=).with(config[:level])
|
77
|
+
|
78
|
+
ResqueWorker.perform
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'configures logger formatter if informed' do
|
82
|
+
config.delete :level
|
83
|
+
|
84
|
+
logger_mock.should_receive(:formatter=).with(config[:formatter])
|
85
|
+
|
86
|
+
ResqueWorker.perform
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'not configures level and formatter if not exists' do
|
90
|
+
config.delete :level
|
91
|
+
config.delete :formatter
|
92
|
+
|
93
|
+
logger_mock.should_not_receive(:level=)
|
94
|
+
logger_mock.should_not_receive(:formatter=)
|
95
|
+
|
96
|
+
ResqueWorker.perform
|
97
|
+
end
|
15
98
|
end
|
16
99
|
end
|
17
100
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resque-logger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-06-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: rspec
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: '0'
|
33
38
|
type: :development
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: resque
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ! '>='
|
@@ -43,7 +53,12 @@ dependencies:
|
|
43
53
|
version: '0'
|
44
54
|
type: :runtime
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
47
62
|
description: A simple mechanism to create custom log files based on queue names of
|
48
63
|
Resque workers.
|
49
64
|
email:
|
@@ -60,17 +75,15 @@ files:
|
|
60
75
|
- UNLICENSE
|
61
76
|
- lib/resque-logger.rb
|
62
77
|
- lib/resque/plugins/logger.rb
|
63
|
-
- lib/resque/plugins/logger/factory.rb
|
64
78
|
- lib/resque/setup.rb
|
65
79
|
- lib/resque_logger.rb
|
66
80
|
- lib/resque_logger/version.rb
|
67
81
|
- resque-logger.gemspec
|
68
|
-
- spec/lib/resque/plugins/logger/factory_spec.rb
|
69
82
|
- spec/lib/resque/plugins/logger_spec.rb
|
70
83
|
- spec/lib/resque_logger_spec.rb
|
71
84
|
- spec/spec_helper.rb
|
72
85
|
- spec/support/rspec_macros.rb
|
73
|
-
homepage:
|
86
|
+
homepage: https://github.com/salizzar/resque-logger
|
74
87
|
licenses: []
|
75
88
|
post_install_message:
|
76
89
|
rdoc_options: []
|
@@ -84,7 +97,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
84
97
|
version: '0'
|
85
98
|
segments:
|
86
99
|
- 0
|
87
|
-
hash:
|
100
|
+
hash: 1231085515247237098
|
88
101
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
102
|
none: false
|
90
103
|
requirements:
|
@@ -93,15 +106,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
93
106
|
version: '0'
|
94
107
|
segments:
|
95
108
|
- 0
|
96
|
-
hash:
|
109
|
+
hash: 1231085515247237098
|
97
110
|
requirements: []
|
98
111
|
rubyforge_project: resque-logger
|
99
|
-
rubygems_version: 1.8.
|
112
|
+
rubygems_version: 1.8.24
|
100
113
|
signing_key:
|
101
114
|
specification_version: 3
|
102
115
|
summary: A Resque plugin to provides logger for each worker
|
103
116
|
test_files:
|
104
|
-
- spec/lib/resque/plugins/logger/factory_spec.rb
|
105
117
|
- spec/lib/resque/plugins/logger_spec.rb
|
106
118
|
- spec/lib/resque_logger_spec.rb
|
107
119
|
- spec/spec_helper.rb
|
@@ -1,49 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
|
3
|
-
module Resque
|
4
|
-
module Plugins
|
5
|
-
module Logger
|
6
|
-
class Factory
|
7
|
-
@queue_map = {}
|
8
|
-
|
9
|
-
#
|
10
|
-
# Returns a new instance of configured logger given a queue name.
|
11
|
-
# If queue logger is already created, returns previous instance.
|
12
|
-
#
|
13
|
-
def self.get(queue)
|
14
|
-
queue_name = queue.to_sym
|
15
|
-
logger = @queue_map[queue_name]
|
16
|
-
|
17
|
-
if logger.nil?
|
18
|
-
logger = create_logger queue_name
|
19
|
-
@queue_map[queue_name] = logger
|
20
|
-
end
|
21
|
-
|
22
|
-
logger
|
23
|
-
end
|
24
|
-
|
25
|
-
private
|
26
|
-
|
27
|
-
#
|
28
|
-
# Creates a new instance of logger given a queue name, retrieving
|
29
|
-
# configuration from Resque.logger.
|
30
|
-
#
|
31
|
-
def self.create_logger(queue)
|
32
|
-
config = Resque.logger
|
33
|
-
log_path = config[:folder]
|
34
|
-
class_name = config[:class_name]
|
35
|
-
class_args = config[:class_args]
|
36
|
-
|
37
|
-
file_path = File.join log_path, "#{queue}.log"
|
38
|
-
|
39
|
-
logger = class_name.new file_path, *class_args
|
40
|
-
logger.level = config[:level] if config[:level]
|
41
|
-
logger.formatter = config[:formatter] if config[:formatter]
|
42
|
-
|
43
|
-
logger
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
@@ -1,69 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe Resque::Plugins::Logger::Factory do
|
6
|
-
include RSpecMacros
|
7
|
-
|
8
|
-
let(:subject) { Resque::Plugins::Logger::Factory }
|
9
|
-
|
10
|
-
let(:logger) { double Logger }
|
11
|
-
let(:queue) { :an_queue }
|
12
|
-
let(:file_path) { File.join config[:folder], "#{queue}.log" }
|
13
|
-
|
14
|
-
before :each do
|
15
|
-
Resque.stub(:logger).and_return(config)
|
16
|
-
end
|
17
|
-
|
18
|
-
describe 'creating a logger given a queue' do
|
19
|
-
before :each do
|
20
|
-
config.delete :level
|
21
|
-
config.delete :formatter
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'returns a new instance of configured logger if not exists' do
|
25
|
-
Logger.should_receive(:new).with(file_path, config[:class_args].first, config[:class_args].last).and_return(logger)
|
26
|
-
|
27
|
-
subject.get(queue).should == logger
|
28
|
-
end
|
29
|
-
|
30
|
-
it 'returns previous created logger if exists' do
|
31
|
-
Logger.should_not_receive(:new)
|
32
|
-
|
33
|
-
subject.get queue
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
describe 'setting configurations' do
|
38
|
-
before :each do
|
39
|
-
Logger.should_receive(:new).and_return(logger)
|
40
|
-
end
|
41
|
-
|
42
|
-
it 'configures level if exists' do
|
43
|
-
config.delete :formatter
|
44
|
-
|
45
|
-
logger.should_receive(:level=).with(config[:level])
|
46
|
-
|
47
|
-
subject.get :a_queue_with_level
|
48
|
-
end
|
49
|
-
|
50
|
-
it 'configures formatter if exists' do
|
51
|
-
config.delete :level
|
52
|
-
|
53
|
-
logger.should_receive(:formatter=).with(config[:formatter])
|
54
|
-
|
55
|
-
subject.get :a_queue_with_formatter
|
56
|
-
end
|
57
|
-
|
58
|
-
it 'not assigns level and formatter if not exists' do
|
59
|
-
config.delete :level
|
60
|
-
config.delete :formatter
|
61
|
-
|
62
|
-
logger.should_not_receive(:level=)
|
63
|
-
logger.should_not_receive(:formatter=)
|
64
|
-
|
65
|
-
subject.get :a_basic_queue_config
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|