resque-logger 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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
-