yell 0.4.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/yell.rb +1 -0
- data/lib/yell/adapters.rb +1 -0
- data/lib/yell/adapters/datefile.rb +49 -5
- data/lib/yell/adapters/io.rb +1 -1
- data/lib/yell/event.rb +16 -0
- data/lib/yell/formatter.rb +10 -16
- data/lib/yell/level.rb +3 -0
- data/lib/yell/logger.rb +1 -5
- data/lib/yell/version.rb +1 -1
- data/spec/yell/event_spec.rb +11 -6
- data/spec/yell/formatter_spec.rb +0 -13
- data/spec/yell/level_spec.rb +11 -6
- data/spec/yell/logger_spec.rb +75 -0
- metadata +74 -74
data/lib/yell.rb
CHANGED
data/lib/yell/adapters.rb
CHANGED
@@ -18,22 +18,39 @@ module Yell #:nodoc:
|
|
18
18
|
|
19
19
|
@date = nil # default; do not override --R
|
20
20
|
|
21
|
+
keep options[:keep]
|
22
|
+
|
21
23
|
super
|
22
24
|
end
|
23
25
|
|
24
26
|
# @overload Reset the file handle
|
25
27
|
def close
|
26
|
-
@filename =
|
28
|
+
@filename = filename_from( @date )
|
27
29
|
|
28
30
|
super
|
29
31
|
end
|
30
32
|
|
33
|
+
# Set the amount of logfiles to keep when rolling over
|
34
|
+
#
|
35
|
+
# @example Keep the last 5 logfiles
|
36
|
+
# keep 5
|
37
|
+
def keep( n = nil )
|
38
|
+
@keep = n
|
39
|
+
end
|
31
40
|
|
32
41
|
private
|
33
42
|
|
34
43
|
# @overload Close the file if date is expired
|
35
44
|
def write!( event )
|
36
|
-
|
45
|
+
if close?
|
46
|
+
close
|
47
|
+
|
48
|
+
unless ::File.exist?( @filename )
|
49
|
+
cleanup if cleanup?
|
50
|
+
|
51
|
+
stream.print( "# -*- #{@date.iso8601} (#{@date.to_f}) [#{@date_pattern}] -*-\n" )
|
52
|
+
end
|
53
|
+
end
|
37
54
|
|
38
55
|
super( event )
|
39
56
|
end
|
@@ -44,8 +61,12 @@ module Yell #:nodoc:
|
|
44
61
|
# If the current time hits the pattern, it closes the file stream.
|
45
62
|
#
|
46
63
|
# @return [Boolean] true or false
|
64
|
+
#
|
65
|
+
# TODO: This method causes the datefile adapter to be twice as slow as the file.
|
66
|
+
# Let's refactor this.
|
47
67
|
def close?
|
48
|
-
_date = Time.now
|
68
|
+
_date = Time.now
|
69
|
+
|
49
70
|
if !@stream or _date != @date
|
50
71
|
@date = _date
|
51
72
|
return true
|
@@ -54,9 +75,31 @@ module Yell #:nodoc:
|
|
54
75
|
false
|
55
76
|
end
|
56
77
|
|
78
|
+
def cleanup
|
79
|
+
files = Dir[ @file_basename.sub( /(\.\w+)?$/, ".*\\1" ) ].map do |f|
|
80
|
+
[ f, metadata_from(f).last ]
|
81
|
+
end.select do |(f, p)|
|
82
|
+
@date_pattern == p
|
83
|
+
end
|
84
|
+
|
85
|
+
::File.unlink( *files.map(&:first)[0..-(@keep)] )
|
86
|
+
end
|
87
|
+
|
88
|
+
def cleanup?
|
89
|
+
!!@keep
|
90
|
+
end
|
91
|
+
|
57
92
|
# Sets the filename with the `:date_pattern` appended to it.
|
58
|
-
def
|
59
|
-
@file_basename.sub( /(\.\w+)?$/, ".#{@
|
93
|
+
def filename_from( date )
|
94
|
+
@file_basename.sub( /(\.\w+)?$/, ".#{date.strftime(@date_pattern)}\\1" )
|
95
|
+
end
|
96
|
+
|
97
|
+
def metadata_from( file )
|
98
|
+
if m = ::File.open( file, &:readline ).match( /^# -\*- (.+) \((\d+\.\d+)\) \[(.+)\] -\*-$/ )
|
99
|
+
[ Time.at( m[2].to_f ), m[3] ]
|
100
|
+
else
|
101
|
+
[ ::File.mtime( file ), "" ]
|
102
|
+
end
|
60
103
|
end
|
61
104
|
|
62
105
|
end
|
@@ -65,3 +108,4 @@ module Yell #:nodoc:
|
|
65
108
|
|
66
109
|
end
|
67
110
|
end
|
111
|
+
|
data/lib/yell/adapters/io.rb
CHANGED
data/lib/yell/event.rb
CHANGED
@@ -21,6 +21,12 @@ module Yell #:nodoc:
|
|
21
21
|
# Accessor to the method the log event occured
|
22
22
|
attr_reader :method
|
23
23
|
|
24
|
+
# Accessor to the hostname
|
25
|
+
attr_reader :hostname
|
26
|
+
|
27
|
+
# Accessor to the pid
|
28
|
+
attr_reader :pid
|
29
|
+
|
24
30
|
|
25
31
|
# Initialize a new log event
|
26
32
|
def initialize( level, message = nil, &block )
|
@@ -28,6 +34,16 @@ module Yell #:nodoc:
|
|
28
34
|
@level = level
|
29
35
|
@message = block ? block.call : message
|
30
36
|
|
37
|
+
@hostname = Socket.gethostname rescue nil
|
38
|
+
@pid = Process.pid
|
39
|
+
|
40
|
+
_initialize_caller
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def _initialize_caller
|
31
47
|
if m = CallerRegexp.match( caller(4).first )
|
32
48
|
@file, @line, @method = m[1..-1]
|
33
49
|
else
|
data/lib/yell/formatter.rb
CHANGED
@@ -51,16 +51,16 @@ module Yell #:nodoc:
|
|
51
51
|
class Formatter
|
52
52
|
|
53
53
|
PatternTable = {
|
54
|
-
"m" => "event.message",
|
55
|
-
"l" => "event.level[0,1]",
|
56
|
-
"L" => "event.level",
|
57
|
-
"d" => "date(event)",
|
58
|
-
"p" => "
|
59
|
-
"h" => "hostname",
|
60
|
-
"F" => "event.file",
|
61
|
-
"f" => "File.basename(event.file)",
|
62
|
-
"M" => "event.method",
|
63
|
-
"n" => "event.line"
|
54
|
+
"m" => "event.message", # Message
|
55
|
+
"l" => "event.level[0,1]", # Level (short), e.g.'I', 'W'
|
56
|
+
"L" => "event.level", # Level, e.g. 'INFO', 'WARN'
|
57
|
+
"d" => "date(event)", # ISO8601 Timestamp
|
58
|
+
"p" => "event.pid", # PID
|
59
|
+
"h" => "event.hostname", # Hostname
|
60
|
+
"F" => "event.file", # Path with filename where the logger was called
|
61
|
+
"f" => "File.basename(event.file)", # Filename where the loger was called
|
62
|
+
"M" => "event.method", # Method name where the logger was called
|
63
|
+
"n" => "event.line" # Line where the logger was called
|
64
64
|
}
|
65
65
|
|
66
66
|
PatternRegexp = /([^%]*)(%\d*)?([#{PatternTable.keys.join}])?(.*)/
|
@@ -107,12 +107,6 @@ module Yell #:nodoc:
|
|
107
107
|
@date_pattern ? event.time.strftime( @date_pattern ) : event.time.iso8601
|
108
108
|
end
|
109
109
|
|
110
|
-
def hostname
|
111
|
-
require 'socket' unless defined? Socket
|
112
|
-
|
113
|
-
Socket.gethostname rescue nil
|
114
|
-
end
|
115
|
-
|
116
110
|
end
|
117
111
|
end
|
118
112
|
|
data/lib/yell/level.rb
CHANGED
@@ -28,6 +28,8 @@ module Yell #:nodoc:
|
|
28
28
|
# Yell::Level.new.at(:info)
|
29
29
|
class Level
|
30
30
|
|
31
|
+
attr_reader :severities
|
32
|
+
|
31
33
|
# Create a new level instance.
|
32
34
|
#
|
33
35
|
# @example Enable all severities
|
@@ -47,6 +49,7 @@ module Yell #:nodoc:
|
|
47
49
|
@severities = Yell::Severities.map { true } # all levels allowed by default
|
48
50
|
|
49
51
|
case severity
|
52
|
+
when Yell::Level then @severities = severity.severities
|
50
53
|
when Array then at( *severity )
|
51
54
|
when Range then gte(severity.first).lte(severity.last)
|
52
55
|
when Integer, String, Symbol then gte(severity)
|
data/lib/yell/logger.rb
CHANGED
@@ -34,8 +34,7 @@ module Yell #:nodoc:
|
|
34
34
|
@options = args.last.is_a?(Hash) ? args.pop : {}
|
35
35
|
|
36
36
|
# set the log level when given
|
37
|
-
|
38
|
-
level @options[:level] # default
|
37
|
+
level @options[:level]
|
39
38
|
|
40
39
|
# check if filename was given as argument and put it into the @options
|
41
40
|
if args.last.is_a?( String )
|
@@ -45,9 +44,6 @@ module Yell #:nodoc:
|
|
45
44
|
# extract adapter
|
46
45
|
adapter args.pop if args.any?
|
47
46
|
|
48
|
-
# set the log level when given
|
49
|
-
level @options[:level] if @options[:level]
|
50
|
-
|
51
47
|
# eval the given block
|
52
48
|
instance_eval( &block ) if block
|
53
49
|
|
data/lib/yell/version.rb
CHANGED
data/spec/yell/event_spec.rb
CHANGED
@@ -4,14 +4,12 @@ describe Yell::Event do
|
|
4
4
|
let(:event) { Yell::Event.new 'INFO', 'Hello World!' }
|
5
5
|
|
6
6
|
context :level do
|
7
|
-
subject { event.level}
|
8
|
-
|
7
|
+
subject { event.level }
|
9
8
|
it { should == 'INFO' }
|
10
9
|
end
|
11
10
|
|
12
11
|
context :message do
|
13
12
|
subject { event.message }
|
14
|
-
|
15
13
|
it { should == 'Hello World!' }
|
16
14
|
end
|
17
15
|
|
@@ -27,6 +25,16 @@ describe Yell::Event do
|
|
27
25
|
it { should == time }
|
28
26
|
end
|
29
27
|
|
28
|
+
context :hostname do
|
29
|
+
subject { event.hostname }
|
30
|
+
it { should == Socket.gethostname }
|
31
|
+
end
|
32
|
+
|
33
|
+
context :pid do
|
34
|
+
subject { event.pid }
|
35
|
+
it { should == Process.pid }
|
36
|
+
end
|
37
|
+
|
30
38
|
context :caller do
|
31
39
|
let(:file) { "event.rb" }
|
32
40
|
let(:line) { "123" }
|
@@ -40,19 +48,16 @@ describe Yell::Event do
|
|
40
48
|
|
41
49
|
context :file do
|
42
50
|
subject { event.file }
|
43
|
-
|
44
51
|
it { should == file }
|
45
52
|
end
|
46
53
|
|
47
54
|
context :line do
|
48
55
|
subject { event.line }
|
49
|
-
|
50
56
|
it { should == line }
|
51
57
|
end
|
52
58
|
|
53
59
|
context :method do
|
54
60
|
subject { event.method }
|
55
|
-
|
56
61
|
it { should == method }
|
57
62
|
end
|
58
63
|
end
|
data/spec/yell/formatter_spec.rb
CHANGED
@@ -14,37 +14,31 @@ describe Yell::Formatter do
|
|
14
14
|
|
15
15
|
context "%m" do
|
16
16
|
subject { "%m" }
|
17
|
-
|
18
17
|
it { format.should == "Hello World!" }
|
19
18
|
end
|
20
19
|
|
21
20
|
context "%l" do
|
22
21
|
subject { "%l" }
|
23
|
-
|
24
22
|
it { format.should == "I" }
|
25
23
|
end
|
26
24
|
|
27
25
|
context "%L" do
|
28
26
|
subject { "%L" }
|
29
|
-
|
30
27
|
it { format.should == "INFO" }
|
31
28
|
end
|
32
29
|
|
33
30
|
context "%d" do
|
34
31
|
subject { "%d" }
|
35
|
-
|
36
32
|
it { format.should == time.iso8601 }
|
37
33
|
end
|
38
34
|
|
39
35
|
context "%p" do
|
40
36
|
subject { "%p" }
|
41
|
-
|
42
37
|
it { format.should == Process.pid.to_s }
|
43
38
|
end
|
44
39
|
|
45
40
|
context "%h" do
|
46
41
|
subject { "%h" }
|
47
|
-
|
48
42
|
it { format.should == Socket.gethostname }
|
49
43
|
end
|
50
44
|
|
@@ -59,44 +53,37 @@ describe Yell::Formatter do
|
|
59
53
|
|
60
54
|
context "%F" do
|
61
55
|
subject { "%F" }
|
62
|
-
|
63
56
|
it { format.should == "/path/to/file.rb" }
|
64
57
|
end
|
65
58
|
|
66
59
|
context "%f" do
|
67
60
|
subject { "%f" }
|
68
|
-
|
69
61
|
it { format.should == "file.rb" }
|
70
62
|
end
|
71
63
|
|
72
64
|
context "%M" do
|
73
65
|
subject { "%M" }
|
74
|
-
|
75
66
|
it { format.should == "test_method" }
|
76
67
|
end
|
77
68
|
|
78
69
|
context "%n" do
|
79
70
|
subject { "%n" }
|
80
|
-
|
81
71
|
it { format.should == "123" }
|
82
72
|
end
|
83
73
|
end
|
84
74
|
|
85
75
|
context "DefaultFormat" do
|
86
76
|
subject { Yell::DefaultFormat }
|
87
|
-
|
88
77
|
it { format.should == "#{time.iso8601} [ INFO] #{$$} : Hello World!" }
|
89
78
|
end
|
90
79
|
|
91
80
|
context "BasicFormat" do
|
92
81
|
subject { Yell::BasicFormat }
|
93
|
-
|
94
82
|
it { format.should == "I, #{time.iso8601} : Hello World!" }
|
95
83
|
end
|
96
84
|
|
97
85
|
context "ExtendedFormat" do
|
98
86
|
subject { Yell::ExtendedFormat }
|
99
|
-
|
100
87
|
it { format.should == "#{time.iso8601} [ INFO] #{$$} #{Socket.gethostname} : Hello World!" }
|
101
88
|
end
|
102
89
|
|
data/spec/yell/level_spec.rb
CHANGED
@@ -67,9 +67,7 @@ describe Yell::Level do
|
|
67
67
|
end
|
68
68
|
|
69
69
|
context "given an Array" do
|
70
|
-
let( :level ) { Yell::Level.new(
|
71
|
-
|
72
|
-
subject { [:debug, :warn, :fatal] }
|
70
|
+
let( :level ) { Yell::Level.new( [:debug, :warn, :fatal] ) }
|
73
71
|
|
74
72
|
it { level.at?(:debug).should be_true }
|
75
73
|
it { level.at?(:info).should be_false }
|
@@ -79,9 +77,7 @@ describe Yell::Level do
|
|
79
77
|
end
|
80
78
|
|
81
79
|
context "given a Range" do
|
82
|
-
let( :level ) { Yell::Level.new(
|
83
|
-
|
84
|
-
subject { (1..3) }
|
80
|
+
let( :level ) { Yell::Level.new( (1..3) ) }
|
85
81
|
|
86
82
|
it { level.at?(:debug).should be_false }
|
87
83
|
it { level.at?(:info).should be_true }
|
@@ -90,4 +86,13 @@ describe Yell::Level do
|
|
90
86
|
it { level.at?(:fatal).should be_false }
|
91
87
|
end
|
92
88
|
|
89
|
+
context "given a Yell::Level instance" do
|
90
|
+
let( :level ) { Yell::Level.new( :warn ) }
|
91
|
+
|
92
|
+
it { level.at?(:debug).should be_false }
|
93
|
+
it { level.at?(:info).should be_false }
|
94
|
+
it { level.at?(:warn).should be_true }
|
95
|
+
it { level.at?(:error).should be_true }
|
96
|
+
it { level.at?(:fatal).should be_true }
|
97
|
+
end
|
93
98
|
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Yell::Logger do
|
4
|
+
|
5
|
+
context "a Logger instance" do
|
6
|
+
let( :logger ) { Yell::Logger.new }
|
7
|
+
|
8
|
+
context "log methods" do
|
9
|
+
subject { logger }
|
10
|
+
|
11
|
+
it { should respond_to :debug }
|
12
|
+
it { should respond_to :debug? }
|
13
|
+
|
14
|
+
it { should respond_to :info }
|
15
|
+
it { should respond_to :info? }
|
16
|
+
|
17
|
+
it { should respond_to :warn }
|
18
|
+
it { should respond_to :warn? }
|
19
|
+
|
20
|
+
it { should respond_to :error }
|
21
|
+
it { should respond_to :error? }
|
22
|
+
|
23
|
+
it { should respond_to :fatal }
|
24
|
+
it { should respond_to :fatal? }
|
25
|
+
|
26
|
+
it { should respond_to :unknown }
|
27
|
+
it { should respond_to :unknown? }
|
28
|
+
end
|
29
|
+
|
30
|
+
context "default adapter" do
|
31
|
+
let( :adapters ) { logger.instance_variable_get :@adapters }
|
32
|
+
|
33
|
+
it { adapters.size.should == 1 }
|
34
|
+
it { adapters.first.should be_kind_of Yell::Adapters::File }
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context "a Logger instance with a given :filename" do
|
39
|
+
it "should call adapter with :file" do
|
40
|
+
mock.proxy( Yell::Adapters::File ).new( anything )
|
41
|
+
|
42
|
+
Yell::Logger.new
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context "a Logger instance with a given :stdout adapter" do
|
47
|
+
before do
|
48
|
+
mock.proxy( Yell::Adapters::Stdout ).new( anything )
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should call adapter with :stdout" do
|
52
|
+
Yell::Logger.new STDOUT
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should call adapter with :stdout" do
|
56
|
+
Yell::Logger.new :stdout
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
context "a Logger instance with a given :stderr adapter" do
|
61
|
+
before do
|
62
|
+
mock.proxy( Yell::Adapters::Stderr ).new( anything )
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should call adapter with :stderr" do
|
66
|
+
Yell::Logger.new STDERR
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should call adapter with :stderr" do
|
70
|
+
Yell::Logger.new :stderr
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
|
metadata
CHANGED
@@ -1,96 +1,96 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: yell
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.1
|
4
5
|
prerelease:
|
5
|
-
version: 0.4.0
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
8
|
-
|
7
|
+
authors:
|
8
|
+
- Rudolf Schmidt
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
12
|
+
date: 2012-03-29 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rr
|
16
|
+
requirement: &70163680872100 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70163680872100
|
25
|
+
description: An easy to use logging library to log into files and any other self-defined
|
26
|
+
adapters
|
27
27
|
email:
|
28
28
|
executables: []
|
29
|
-
|
30
29
|
extensions: []
|
31
|
-
|
32
30
|
extra_rdoc_files: []
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
31
|
+
files:
|
32
|
+
- .gitignore
|
33
|
+
- .travis.yml
|
34
|
+
- Gemfile
|
35
|
+
- LICENSE.txt
|
36
|
+
- README.md
|
37
|
+
- Rakefile
|
38
|
+
- examples/001-basic-usage.rb
|
39
|
+
- examples/002.1-log-level-basics.rb
|
40
|
+
- examples/002.2-log-level-on-certain-severities-only.rb
|
41
|
+
- examples/002.3-log-level-within-range.rb
|
42
|
+
- examples/003.1-formatting-DefaultFormat.rb
|
43
|
+
- examples/003.2-formatting-BasicFormat.rb
|
44
|
+
- examples/003.3-formatting-ExtendedFormat.rb
|
45
|
+
- examples/003.4-formatting-on-your-own.rb
|
46
|
+
- lib/yell.rb
|
47
|
+
- lib/yell/adapters.rb
|
48
|
+
- lib/yell/adapters/base.rb
|
49
|
+
- lib/yell/adapters/datefile.rb
|
50
|
+
- lib/yell/adapters/file.rb
|
51
|
+
- lib/yell/adapters/io.rb
|
52
|
+
- lib/yell/adapters/streams.rb
|
53
|
+
- lib/yell/event.rb
|
54
|
+
- lib/yell/formatter.rb
|
55
|
+
- lib/yell/level.rb
|
56
|
+
- lib/yell/logger.rb
|
57
|
+
- lib/yell/version.rb
|
58
|
+
- spec/spec_helper.rb
|
59
|
+
- spec/yell/event_spec.rb
|
60
|
+
- spec/yell/formatter_spec.rb
|
61
|
+
- spec/yell/level_spec.rb
|
62
|
+
- spec/yell/logger_spec.rb
|
63
|
+
- spec/yell_spec.rb
|
64
|
+
- yell.gemspec
|
67
65
|
homepage: http://rubygems.org/gems/yell
|
68
66
|
licenses: []
|
69
|
-
|
70
67
|
post_install_message:
|
71
68
|
rdoc_options: []
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
69
|
+
require_paths:
|
70
|
+
- lib
|
71
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
76
72
|
none: false
|
77
|
-
requirements:
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
78
|
none: false
|
83
|
-
requirements:
|
84
|
-
|
85
|
-
|
86
|
-
|
79
|
+
requirements:
|
80
|
+
- - ! '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
87
83
|
requirements: []
|
88
|
-
|
89
84
|
rubyforge_project: yell
|
90
|
-
rubygems_version: 1.8.
|
85
|
+
rubygems_version: 1.8.17
|
91
86
|
signing_key:
|
92
87
|
specification_version: 3
|
93
88
|
summary: Yell - Your Extensible Logging Library
|
94
|
-
test_files:
|
95
|
-
|
89
|
+
test_files:
|
90
|
+
- spec/spec_helper.rb
|
91
|
+
- spec/yell/event_spec.rb
|
92
|
+
- spec/yell/formatter_spec.rb
|
93
|
+
- spec/yell/level_spec.rb
|
94
|
+
- spec/yell/logger_spec.rb
|
95
|
+
- spec/yell_spec.rb
|
96
96
|
has_rdoc:
|