loggable 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc ADDED
@@ -0,0 +1,81 @@
1
+ = Loggable
2
+
3
+ Loggable is a gem that's designed to add a logging interface to classes that don't
4
+ automatically support it.
5
+
6
+ == Installation
7
+
8
+ Stable:
9
+
10
+ sudo gem install loggable
11
+
12
+ Bleeding Edge (hardly):
13
+
14
+ sudo gem install vigetlabs-loggable --source=http://gems.github.com
15
+
16
+ == Usage
17
+
18
+ Using the Gem is easy, just assign a new logger to your class:
19
+
20
+ require 'rubygems'
21
+ require 'logger'
22
+ require 'loggable'
23
+
24
+ class MyClass; end
25
+
26
+ MyClass.logger = Logger.new('debug.log')
27
+
28
+ Now, any class or instance methods have access to the logger:
29
+
30
+ class MyClass
31
+ def self.do_something
32
+ logger.debug 'doing something in the class'
33
+ end
34
+
35
+ def do_something
36
+ logger.debug 'doing something in an instance'
37
+ end
38
+ end
39
+
40
+ The above code will write into the log file when called:
41
+
42
+ MyClass.do_something
43
+ MyClass.new.do_something
44
+
45
+ debug.log:
46
+
47
+ D, [2008-04-24T20:37:32.273930 #25821] DEBUG -- : doing something in the class
48
+ D, [2008-04-24T20:37:32.274062 #25821] DEBUG -- : doing something in an instance
49
+
50
+ == Removing Logger Functionality
51
+
52
+ Calling the <tt>logger=</tt> class method to assign a logger to the class will
53
+ trigger the methods necessary to start logging messages. If you want to turn off
54
+ logging temporarily (without removing the logging statements from your class),
55
+ comment out the line where you assign the new logger. By default, the logger is
56
+ stubbed out, so any calls to methods on it will just return nil.
57
+
58
+ == Credits
59
+
60
+ Copyright (c) 2008 Patrick Reagan of Viget Labs (mailto:patrick.reagan@viget.com)
61
+
62
+ Permission is hereby granted, free of charge, to any person
63
+ obtaining a copy of this software and associated documentation
64
+ files (the "Software"), to deal in the Software without
65
+ restriction, including without limitation the rights to use,
66
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
67
+ copies of the Software, and to permit persons to whom the
68
+ Software is furnished to do so, subject to the following
69
+ conditions:
70
+
71
+ The above copyright notice and this permission notice shall be
72
+ included in all copies or substantial portions of the Software.
73
+
74
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
75
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
76
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
77
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
78
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
79
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
80
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
81
+ OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile CHANGED
@@ -4,41 +4,35 @@ require 'rake/testtask'
4
4
 
5
5
  require 'lib/loggable/version'
6
6
 
7
- GEM = "loggable"
8
- AUTHOR = "Patrick Reagan"
9
- EMAIL = "patrick.reagan@viget.com"
10
- HOMEPAGE = "http://viget.rubyforge.org/loggable"
11
- SUMMARY = "A gem that provides logging capabilities to any class"
12
-
13
7
  task :default => :test
14
8
 
15
9
  spec = Gem::Specification.new do |s|
16
- s.name = GEM
17
- s.version = Loggable::VERSION::STRING
18
- s.platform = Gem::Platform::RUBY
19
- s.has_rdoc = true
20
- s.extra_rdoc_files = ["README", "LICENSE"]
21
- s.summary = SUMMARY
22
- s.description = s.summary
23
- s.author = AUTHOR
24
- s.email = EMAIL
25
- s.homepage = HOMEPAGE
10
+ s.name = 'loggable'
11
+ s.version = Loggable::Version.to_s
12
+ s.has_rdoc = true
13
+ s.extra_rdoc_files = %w(README.rdoc)
14
+ s.rdoc_options = %w(--main README.rdoc)
15
+ s.summary = "A gem that provides logging capabilities to any class"
16
+ s.author = 'Patrick Reagan'
17
+ s.email = 'patrick.reagan@viget.com'
18
+ s.homepage = 'http://viget.com/extend'
26
19
  s.rubyforge_project = 'viget'
27
-
28
- s.require_path = 'lib'
29
- s.files = %w(LICENSE README HISTORY Rakefile) + Dir.glob("{lib,test}/**/*")
20
+ s.files = %w(README.rdoc Rakefile) + Dir.glob("{lib,test}/**/*")
30
21
  end
31
22
 
32
23
  Rake::GemPackageTask.new(spec) do |pkg|
33
24
  pkg.gem_spec = spec
34
25
  end
35
26
 
36
- task :install => [:package] do
37
- sh %{sudo gem install pkg/#{GEM}-#{VERSION}}
38
- end
39
-
40
27
  Rake::TestTask.new do |t|
41
28
  t.libs << 'test'
42
- t.pattern = FileList['test/examples/*_test.rb']
29
+ t.test_files = FileList["test/**/*_test.rb"]
43
30
  t.verbose = true
31
+ end
32
+
33
+ desc 'Generate the gemspec to serve this Gem from Github'
34
+ task :github do
35
+ file = File.dirname(__FILE__) + "/#{spec.name}.gemspec"
36
+ File.open(file, 'w') {|f| f << spec.to_ruby }
37
+ puts "Created gemspec: #{file}"
44
38
  end
data/lib/loggable.rb CHANGED
@@ -1,5 +1,16 @@
1
+ $:.unshift File.dirname(__FILE__)
2
+
1
3
  require 'loggable/log_methods'
2
4
  require 'loggable/logger_stub'
3
5
 
4
- Object.send(:extend, Loggable::ClassMethods)
5
- Object.send(:include, Loggable::InstanceMethods)
6
+ class Object
7
+ include Loggable::InstanceMethods
8
+ end
9
+
10
+ class Class
11
+ include Loggable::ClassMethods
12
+ end
13
+
14
+ class Module
15
+ include Loggable::ClassMethods
16
+ end
@@ -6,7 +6,7 @@ module Loggable
6
6
 
7
7
  # Use this method on any of your classes to trigger the logging facility:
8
8
  #
9
- # MyClass.logger = Logger.new('/path/to/logfile)
9
+ # MyClass.logger = Logger.new('/path/to/logfile')
10
10
  #
11
11
  # Now you can call the 'logger' method inside a class or instance method to log at
12
12
  # the specified level. See the README for details.
@@ -1,11 +1,13 @@
1
1
  module Loggable
2
-
3
- module VERSION #:nodoc:
2
+ module Version
3
+
4
4
  MAJOR = 0
5
- MINOR = 1
5
+ MINOR = 2
6
6
  TINY = 0
7
7
 
8
- STRING = [MAJOR, MINOR, TINY].join('.')
8
+ def self.to_s # :nodoc:
9
+ [MAJOR, MINOR, TINY].join('.')
10
+ end
11
+
9
12
  end
10
-
11
13
  end
@@ -6,12 +6,18 @@ class MyClass
6
6
  end
7
7
  end
8
8
 
9
+ module MyModule; end
10
+
9
11
  describe "MyClass, with loggable mix-in" do
10
12
 
11
13
  before(:each) do
12
14
  @logger = mock()
13
15
  end
14
16
 
17
+ after(:each) do
18
+ MyClass.logger = nil
19
+ end
20
+
15
21
  it "should have a logger stub by default" do
16
22
  MyClass.logger.should.be.an.instance_of(LoggerStub)
17
23
  end
@@ -31,4 +37,18 @@ describe "MyClass, with loggable mix-in" do
31
37
  MyClass.new.logger.should.equal @logger
32
38
  end
33
39
 
40
+ end
41
+
42
+ describe "MyModule, with loggable mix-in" do
43
+
44
+ it "should have a logger stub by default" do
45
+ MyModule.logger.should.be.an.instance_of(LoggerStub)
46
+ end
47
+
48
+ it "should be able to log messages" do
49
+ logger = mock {|m| m.expects(:debug).with('blip') }
50
+ MyModule.logger = logger
51
+ MyModule.logger.debug('blip')
52
+ end
53
+
34
54
  end
data/test/test_helper.rb CHANGED
@@ -2,7 +2,4 @@ require 'rubygems'
2
2
  require 'test/spec'
3
3
  require 'mocha'
4
4
 
5
- $TESTING=true
6
- $:.push File.join(File.dirname(__FILE__), '..', 'lib')
7
-
8
- require 'loggable'
5
+ require File.dirname(__FILE__) + '/../lib/loggable'
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.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Reagan
@@ -9,23 +9,20 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-05-09 00:00:00 -04:00
12
+ date: 2009-01-21 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
16
- description: A gem that provides logging capabilities to any class
16
+ description:
17
17
  email: patrick.reagan@viget.com
18
18
  executables: []
19
19
 
20
20
  extensions: []
21
21
 
22
22
  extra_rdoc_files:
23
- - README
24
- - LICENSE
23
+ - README.rdoc
25
24
  files:
26
- - LICENSE
27
- - README
28
- - HISTORY
25
+ - README.rdoc
29
26
  - Rakefile
30
27
  - lib/loggable
31
28
  - lib/loggable/log_methods.rb
@@ -37,10 +34,11 @@ files:
37
34
  - test/examples/logger_stub_test.rb
38
35
  - test/test_helper.rb
39
36
  has_rdoc: true
40
- homepage: http://viget.rubyforge.org/loggable
37
+ homepage: http://viget.com/extend
41
38
  post_install_message:
42
- rdoc_options: []
43
-
39
+ rdoc_options:
40
+ - --main
41
+ - README.rdoc
44
42
  require_paths:
45
43
  - lib
46
44
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -58,7 +56,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
58
56
  requirements: []
59
57
 
60
58
  rubyforge_project: viget
61
- rubygems_version: 1.1.0
59
+ rubygems_version: 1.3.1
62
60
  signing_key:
63
61
  specification_version: 2
64
62
  summary: A gem that provides logging capabilities to any class
data/HISTORY DELETED
@@ -1,10 +0,0 @@
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
-
7
- == 0.0.1 2008-04-24
8
-
9
- * 1 major enhancement:
10
- * Initial release
data/LICENSE DELETED
@@ -1,20 +0,0 @@
1
- Copyright (c) 2007 YOUR NAME
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README DELETED
@@ -1,57 +0,0 @@
1
- = Loggable
2
-
3
- Loggable is a gem that's designed to add a logging interface to classes that don't
4
- automatically support it.
5
-
6
- == Installation
7
-
8
- This code is available as a Ruby Gem:
9
-
10
- sudo gem install loggable
11
-
12
- == Usage
13
-
14
- Using the Gem is easy, just assign a new logger to your class:
15
-
16
- require 'rubygems'
17
- require 'logger'
18
- require 'loggable'
19
-
20
- class MyClass; end
21
-
22
- MyClass.logger = Logger.new('debug.log')
23
-
24
- Now, any class or instance methods have access to the logger:
25
-
26
- class MyClass
27
- def self.do_something
28
- logger.debug 'doing something in the class'
29
- end
30
-
31
- def do_something
32
- logger.debug 'doing something in an instance'
33
- end
34
- end
35
-
36
- The above code will write into the log file when called:
37
-
38
- MyClass.do_something
39
- MyClass.new.do_something
40
-
41
- debug.log:
42
-
43
- D, [2008-04-24T20:37:32.273930 #25821] DEBUG -- : doing something in the class
44
- D, [2008-04-24T20:37:32.274062 #25821] DEBUG -- : doing something in an instance
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
-
54
- == Credits
55
-
56
- Copyright (c) 2008 Patrick Reagan of Viget Labs (mailto:patrick.reagan@viget.com)
57
- Released under the MIT license