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 CHANGED
@@ -35,6 +35,10 @@ Usage
35
35
 
36
36
  def self.perform(args = {})
37
37
  (...)
38
+
39
+ logger.info('it works!')
40
+
41
+ (...)
38
42
  end
39
43
  end
40
44
 
@@ -7,7 +7,28 @@ module Resque
7
7
  # Returns a logger instance based on queue name.
8
8
  #
9
9
  def logger
10
- Resque::Plugins::Logger::Factory.get @queue
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
@@ -2,11 +2,7 @@
2
2
 
3
3
  module Resque
4
4
  module Plugins
5
- autoload :Logger, 'resque/plugins/logger'
6
-
7
- module Logger
8
- autoload :Factory, 'resque/plugins/logger/factory'
9
- end
5
+ autoload :Logger, 'resque/plugins/logger'
10
6
  end
11
7
  end
12
8
 
@@ -1,3 +1,3 @@
1
1
  module ResqueLogger
2
- VERSION = "0.0.1"
2
+ VERSION = '0.1.0'
3
3
  end
@@ -1,17 +1,18 @@
1
1
  # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "resque_logger/version"
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 = "resque-logger"
7
+ s.name = 'resque-logger'
7
8
  s.version = ResqueLogger::VERSION
8
- s.authors = ["Marcelo Correia Pinheiro"]
9
- s.email = ["salizzar@gmail.com"]
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 = "resque-logger"
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
- include Resque::Plugins::Logger
6
+ @worker_queue = :worker_queue
7
7
 
8
- @queue = :an_queue
8
+ class ResqueWorker
9
+ extend Resque::Plugins::Logger
9
10
 
10
- let(:a_logger) { double 'an mock' }
11
+ @queue = @worker_queue
11
12
 
12
- it 'returns a instance created by a logger factory' do
13
- Resque::Plugins::Logger::Factory.should_receive(:get).with(@queue).and_return(a_logger)
14
- logger.should == a_logger
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.1
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-05-02 00:00:00.000000000 Z
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: &70257554434120 !ruby/object:Gem::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: *70257554434120
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: &70257554433360 !ruby/object:Gem::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: *70257554433360
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: &70257554432580 !ruby/object:Gem::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: *70257554432580
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: -2417837300736213772
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: -2417837300736213772
109
+ hash: 1231085515247237098
97
110
  requirements: []
98
111
  rubyforge_project: resque-logger
99
- rubygems_version: 1.8.10
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
-