loggable 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/HISTORY CHANGED
@@ -1,3 +1,9 @@
1
+ == 0.1.0 2008-05-09
2
+
3
+ * 2 major enhancements:
4
+ * Changed the API for using the logging functionality (Class.logger=)
5
+ * Added in a LoggerStub to intercept calls to a non-existent logging facility
6
+
1
7
  == 0.0.1 2008-04-24
2
8
 
3
9
  * 1 major enhancement:
data/README CHANGED
@@ -11,23 +11,17 @@ This code is available as a Ruby Gem:
11
11
 
12
12
  == Usage
13
13
 
14
- Using the Gem is easy, just include the <tt>loggable</tt> class method in your class
15
- to enable it:
14
+ Using the Gem is easy, just assign a new logger to your class:
16
15
 
17
16
  require 'rubygems'
18
17
  require 'logger'
19
18
  require 'loggable'
20
-
21
- class MyClass
22
- loggable
23
- end
24
19
 
25
- Now you can assign a logger instance to this class and have it write log messages to
26
- the specified file:
27
-
28
- MyClass.logger = Logger.new('debug.log')
20
+ class MyClass; end
29
21
 
30
- Any class or instance methods now have access to the logger:
22
+ MyClass.logger = Logger.new('debug.log')
23
+
24
+ Now, any class or instance methods have access to the logger:
31
25
 
32
26
  class MyClass
33
27
  def self.do_something
@@ -49,6 +43,14 @@ The above code will write into the log file when called:
49
43
  D, [2008-04-24T20:37:32.273930 #25821] DEBUG -- : doing something in the class
50
44
  D, [2008-04-24T20:37:32.274062 #25821] DEBUG -- : doing something in an instance
51
45
 
46
+ == Removing Logger Functionality
47
+
48
+ Calling the <tt>logger=</tt> class method to assign a logger to the class will
49
+ trigger the methods necessary to start logging messages. If you want to turn off
50
+ logging temporarily (without removing the logging statements from your class),
51
+ comment out the line where you assign the new logger. By default, the logger is
52
+ stubbed out, so any calls to methods on it will just return nil.
53
+
52
54
  == Credits
53
55
 
54
56
  Copyright (c) 2008 Patrick Reagan of Viget Labs (mailto:patrick.reagan@viget.com)
data/Rakefile CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'rake/gempackagetask'
3
3
  require 'rake/testtask'
4
4
 
5
- require 'lib/version'
5
+ require 'lib/loggable/version'
6
6
 
7
7
  GEM = "loggable"
8
8
  AUTHOR = "Patrick Reagan"
data/lib/loggable.rb CHANGED
@@ -1,43 +1,5 @@
1
- module Loggable
2
-
3
- module LogMethods
4
-
5
- # Including this in your class definition will add the ability to use a logger within
6
- # your class:
7
- #
8
- # class MyClass
9
- # loggable
10
- # end
11
- #
12
- # Now you can assign a logger instance to this class and have it write to the specified
13
- # logfile. See the README for details.
14
- #
15
- def loggable
16
- extend ClassMethods
17
- include InstanceMethods
18
- end
19
- end
20
-
21
- module ClassMethods
22
-
23
- @@logger = nil
24
-
25
- def logger=(logger)
26
- @@logger = logger
27
- end
28
-
29
- def logger
30
- @@logger
31
- end
32
-
33
- end
34
-
35
- module InstanceMethods
36
- def logger
37
- self.class.logger
38
- end
39
- end
40
-
41
- end
1
+ require 'loggable/log_methods'
2
+ require 'loggable/logger_stub'
42
3
 
43
- Object.send(:extend, Loggable::LogMethods)
4
+ Object.send(:extend, Loggable::ClassMethods)
5
+ Object.send(:include, Loggable::InstanceMethods)
@@ -0,0 +1,30 @@
1
+ module Loggable
2
+
3
+ module ClassMethods
4
+
5
+ @@logger = nil
6
+
7
+ # Use this method on any of your classes to trigger the logging facility:
8
+ #
9
+ # MyClass.logger = Logger.new('/path/to/logfile)
10
+ #
11
+ # Now you can call the 'logger' method inside a class or instance method to log at
12
+ # the specified level. See the README for details.
13
+ #
14
+ def logger=(logger)
15
+ @@logger = logger
16
+ end
17
+
18
+ def logger
19
+ @@logger || LoggerStub.new
20
+ end
21
+
22
+ end
23
+
24
+ module InstanceMethods
25
+ def logger
26
+ self.class.logger
27
+ end
28
+ end
29
+
30
+ end
@@ -0,0 +1,9 @@
1
+ class LoggerStub
2
+
3
+ [:debug, :error, :fatal, :info, :warn].each do |method|
4
+ define_method(method) do
5
+ nil
6
+ end
7
+ end
8
+
9
+ end
@@ -2,8 +2,8 @@ module Loggable
2
2
 
3
3
  module VERSION #:nodoc:
4
4
  MAJOR = 0
5
- MINOR = 0
6
- TINY = 1
5
+ MINOR = 1
6
+ TINY = 0
7
7
 
8
8
  STRING = [MAJOR, MINOR, TINY].join('.')
9
9
  end
@@ -1,6 +1,10 @@
1
1
  require File.dirname(__FILE__) + '/../test_helper'
2
2
 
3
- class MyClass; loggable; end
3
+ class MyClass
4
+ def logged_method
5
+ logger.debug 'message'
6
+ end
7
+ end
4
8
 
5
9
  describe "MyClass, with loggable mix-in" do
6
10
 
@@ -8,8 +12,13 @@ describe "MyClass, with loggable mix-in" do
8
12
  @logger = mock()
9
13
  end
10
14
 
11
- it "should have nothing as a logger by default" do
12
- MyClass.logger.should.be nil
15
+ it "should have a logger stub by default" do
16
+ MyClass.logger.should.be.an.instance_of(LoggerStub)
17
+ end
18
+
19
+ it "should not fail when an instance calls an uninitialized logger" do
20
+ m = MyClass.new
21
+ lambda { m.logged_method }.should.not.raise
13
22
  end
14
23
 
15
24
  it "should allow the asssignment of a logger" do
@@ -0,0 +1,15 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ describe "LoggerStub" do
4
+
5
+ before(:each) do
6
+ @logger = LoggerStub.new
7
+ end
8
+
9
+ it "should return nil for all standard logging methods" do
10
+ [:debug, :error, :fatal, :info, :warn].each do |method|
11
+ @logger.send(method).should.be.nil
12
+ end
13
+ end
14
+
15
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: loggable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Reagan
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-04-24 00:00:00 -04:00
12
+ date: 2008-05-09 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -27,10 +27,14 @@ files:
27
27
  - README
28
28
  - HISTORY
29
29
  - Rakefile
30
+ - lib/loggable
31
+ - lib/loggable/log_methods.rb
32
+ - lib/loggable/logger_stub.rb
33
+ - lib/loggable/version.rb
30
34
  - lib/loggable.rb
31
- - lib/version.rb
32
35
  - test/examples
33
- - test/examples/loggable_test.rb
36
+ - test/examples/log_methods_test.rb
37
+ - test/examples/logger_stub_test.rb
34
38
  - test/test_helper.rb
35
39
  has_rdoc: true
36
40
  homepage: http://viget.rubyforge.org/loggable