yell 0.7.0 → 0.8.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/lib/yell/adapters/base.rb +2 -7
- data/lib/yell/adapters/io.rb +8 -8
- data/lib/yell/event.rb +49 -21
- data/lib/yell/formatter.rb +19 -4
- data/lib/yell/logger.rb +11 -11
- data/lib/yell/version.rb +1 -1
- data/lib/yell.rb +0 -3
- data/spec/yell/adapters/base_spec.rb +2 -2
- data/spec/yell/adapters/datefile_spec.rb +1 -1
- data/spec/yell/adapters/file_spec.rb +1 -1
- data/spec/yell/adapters/io_spec.rb +1 -1
- data/spec/yell/event_spec.rb +37 -29
- data/spec/yell/formatter_spec.rb +18 -3
- data/spec/yell/logger_spec.rb +31 -4
- metadata +69 -53
data/lib/yell/adapters/base.rb
CHANGED
@@ -1,14 +1,10 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'thread'
|
4
4
|
|
5
5
|
module Yell #:nodoc:
|
6
6
|
module Adapters #:nodoc:
|
7
7
|
|
8
|
-
class Mutex
|
9
|
-
include MonitorMixin
|
10
|
-
end
|
11
|
-
|
12
8
|
# This class provides the basic interface for all allowed operations on any
|
13
9
|
# adapter implementation. Other adapters should inherit from it for the methods
|
14
10
|
# used by the {Yell::Logger}.
|
@@ -117,10 +113,9 @@ module Yell #:nodoc:
|
|
117
113
|
#
|
118
114
|
# You should not overload the constructor, use #setup instead.
|
119
115
|
def initialize( options = {}, &block )
|
120
|
-
@mutex =
|
116
|
+
@mutex = Mutex.new
|
121
117
|
|
122
118
|
setup!(options)
|
123
|
-
|
124
119
|
block.call(self) if block
|
125
120
|
end
|
126
121
|
|
data/lib/yell/adapters/io.rb
CHANGED
@@ -10,13 +10,13 @@ module Yell #:nodoc:
|
|
10
10
|
|
11
11
|
# The possible unix log colors
|
12
12
|
Colors = {
|
13
|
-
|
14
|
-
#
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
13
|
+
0 => "\e[32;1m", # green;bold
|
14
|
+
# 1 => "\e[0m", # white
|
15
|
+
2 => "\e[33;1m", # yello;bold
|
16
|
+
3 => "\e[31;1m", # red;bold
|
17
|
+
4 => "\e[35;1m", # magenta;bold
|
18
|
+
5 => "\e[36m", # cyan
|
19
|
+
-1 => "\e[0m" # NONE
|
20
20
|
}
|
21
21
|
|
22
22
|
setup do |options|
|
@@ -31,7 +31,7 @@ module Yell #:nodoc:
|
|
31
31
|
|
32
32
|
# colorize if applicable
|
33
33
|
if colors and color = Colors[event.level]
|
34
|
-
message = color + message + Colors[
|
34
|
+
message = color + message + Colors[-1]
|
35
35
|
end
|
36
36
|
|
37
37
|
message << "\n" unless message[-1] == ?\n # add new line if there is none
|
data/lib/yell/event.rb
CHANGED
@@ -1,9 +1,23 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
+
require 'time'
|
4
|
+
require 'socket'
|
5
|
+
|
3
6
|
module Yell #:nodoc:
|
4
7
|
|
5
8
|
class Event
|
6
|
-
|
9
|
+
# regex to fetch caller attributes
|
10
|
+
@@caller_regexp = /^(.+?):(\d+)(?::in `(.+)')?/
|
11
|
+
|
12
|
+
# jruby and rubinius seemsto have a different caller
|
13
|
+
@@caller_index = 2
|
14
|
+
if defined?(RUBY_ENGINE) and ["rbx", "jruby"].include?(RUBY_ENGINE)
|
15
|
+
@@caller_index =1
|
16
|
+
end
|
17
|
+
|
18
|
+
# Prefetch those values (no need to do that on every new instance)
|
19
|
+
@@hostname = Socket.gethostname rescue nil
|
20
|
+
@@pid = Process.pid
|
7
21
|
|
8
22
|
# Accessor to the log level
|
9
23
|
attr_reader :level
|
@@ -14,21 +28,6 @@ module Yell #:nodoc:
|
|
14
28
|
# Accessor to the time the log event occured
|
15
29
|
attr_reader :time
|
16
30
|
|
17
|
-
# Accessor to filename the log event occured
|
18
|
-
attr_reader :file
|
19
|
-
|
20
|
-
# Accessor to the line the log event occured
|
21
|
-
attr_reader :line
|
22
|
-
|
23
|
-
# Accessor to the method the log event occured
|
24
|
-
attr_reader :method
|
25
|
-
|
26
|
-
# Accessor to the hostname
|
27
|
-
attr_reader :hostname
|
28
|
-
|
29
|
-
# Accessor to the pid
|
30
|
-
attr_reader :pid
|
31
|
-
|
32
31
|
# Accessor to the current tread_id
|
33
32
|
attr_reader :thread_id
|
34
33
|
|
@@ -38,18 +37,47 @@ module Yell #:nodoc:
|
|
38
37
|
@level = level
|
39
38
|
@message = block ? block.call : message
|
40
39
|
|
41
|
-
@hostname = Socket.gethostname rescue nil
|
42
|
-
@pid = Process.pid
|
43
40
|
@thread_id = Thread.current.object_id
|
44
41
|
|
45
|
-
|
42
|
+
@caller = caller[@@caller_index].to_s
|
43
|
+
@file = nil
|
44
|
+
@line = nil
|
45
|
+
@method = nil
|
46
|
+
end
|
47
|
+
|
48
|
+
# Accessor to the pid
|
49
|
+
def hostname
|
50
|
+
@@hostname
|
51
|
+
end
|
52
|
+
|
53
|
+
# Accessor to the hostname
|
54
|
+
def pid
|
55
|
+
@@pid
|
56
|
+
end
|
57
|
+
|
58
|
+
# Accessor to filename the log event occured
|
59
|
+
def file
|
60
|
+
_caller! if @file.nil?
|
61
|
+
@file
|
62
|
+
end
|
63
|
+
|
64
|
+
# Accessor to the line the log event occured
|
65
|
+
def line
|
66
|
+
_caller! if @line.nil?
|
67
|
+
@line
|
68
|
+
end
|
69
|
+
|
70
|
+
# Accessor to the method the log event occured
|
71
|
+
def method
|
72
|
+
_caller! if @method.nil?
|
73
|
+
@method
|
46
74
|
end
|
47
75
|
|
48
76
|
|
49
77
|
private
|
50
78
|
|
51
|
-
def
|
52
|
-
if m =
|
79
|
+
def _caller!
|
80
|
+
if m = @@caller_regexp.match( @caller )
|
53
81
|
@file, @line, @method = m[1..-1]
|
54
82
|
else
|
55
83
|
@file, @line, @method = ['', '', '']
|
data/lib/yell/formatter.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
+
require 'time'
|
4
|
+
|
3
5
|
module Yell #:nodoc:
|
4
6
|
|
5
7
|
# No format on the log message
|
@@ -59,9 +61,9 @@ module Yell #:nodoc:
|
|
59
61
|
end
|
60
62
|
|
61
63
|
PatternTable = {
|
62
|
-
"m" => "event
|
63
|
-
"l" => "event
|
64
|
-
"L" => "event
|
64
|
+
"m" => "message(event)", # Message
|
65
|
+
"l" => "level(event)[0,1]", # Level (short), e.g.'I', 'W'
|
66
|
+
"L" => "level(event)", # Level, e.g. 'INFO', 'WARN'
|
65
67
|
"d" => "date(event)", # ISO8601 Timestamp
|
66
68
|
"h" => "event.hostname", # Hostname
|
67
69
|
"p" => "event.pid", # PID
|
@@ -100,7 +102,7 @@ module Yell #:nodoc:
|
|
100
102
|
buff << match[1] unless match[1].empty?
|
101
103
|
break if match[2].nil?
|
102
104
|
|
103
|
-
buff << match[2] + 's'
|
105
|
+
buff << match[2] + 's'
|
104
106
|
args << PatternTable[ match[3] ]
|
105
107
|
|
106
108
|
_pattern = match[4]
|
@@ -113,6 +115,19 @@ module Yell #:nodoc:
|
|
113
115
|
-
|
114
116
|
end
|
115
117
|
|
118
|
+
def message( event )
|
119
|
+
return event.message unless event.message.is_a? Exception
|
120
|
+
|
121
|
+
exception = event.message
|
122
|
+
backtrace = exception.backtrace ? "\n\t#{exception.backtrace.join("\n\t")}" : ""
|
123
|
+
|
124
|
+
"%s: %s%s" % [exception.class, exception.message, backtrace]
|
125
|
+
end
|
126
|
+
|
127
|
+
def level( event )
|
128
|
+
Yell::Severities[ event.level ]
|
129
|
+
end
|
130
|
+
|
116
131
|
def date( event )
|
117
132
|
@date_pattern ? event.time.strftime( @date_pattern ) : event.time.iso8601
|
118
133
|
end
|
data/lib/yell/logger.rb
CHANGED
@@ -49,8 +49,8 @@ module Yell #:nodoc:
|
|
49
49
|
self.adapter args.pop if args.any?
|
50
50
|
|
51
51
|
# eval the given block
|
52
|
-
block.call(self) if block
|
53
|
-
|
52
|
+
# block.call(self) if block
|
53
|
+
_call( &block ) if block
|
54
54
|
|
55
55
|
# default adapter when none defined
|
56
56
|
adapter :file if @adapters.empty?
|
@@ -118,15 +118,15 @@ module Yell #:nodoc:
|
|
118
118
|
name = s.downcase
|
119
119
|
|
120
120
|
class_eval <<-EOS, __FILE__, __LINE__
|
121
|
-
def #{name}?; @level.at?(#{index}); end
|
122
|
-
|
123
|
-
def #{name}( m = nil, &b )
|
124
|
-
return unless #{name}?
|
125
|
-
|
126
|
-
write Yell::Event.new(
|
127
|
-
|
128
|
-
true
|
129
|
-
end
|
121
|
+
def #{name}?; @level.at?(#{index}); end # def info?; @level.at?(1); end
|
122
|
+
#
|
123
|
+
def #{name}( m = nil, &b ) # def info( m = nil, &b )
|
124
|
+
return unless #{name}? # return unless info?
|
125
|
+
#
|
126
|
+
write Yell::Event.new( #{index}, m, &b ) # write Yell::Event.new( 1, m, &b )
|
127
|
+
#
|
128
|
+
true # true
|
129
|
+
end # end
|
130
130
|
EOS
|
131
131
|
end
|
132
132
|
|
data/lib/yell/version.rb
CHANGED
data/lib/yell.rb
CHANGED
@@ -21,9 +21,6 @@
|
|
21
21
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
22
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
23
23
|
|
24
|
-
require 'time'
|
25
|
-
require 'socket'
|
26
|
-
|
27
24
|
module Yell #:nodoc:
|
28
25
|
Severities = [ 'DEBUG', 'INFO', 'WARN', 'ERROR', 'FATAL', 'UNKNOWN' ]
|
29
26
|
|
@@ -39,7 +39,7 @@ describe Yell::Adapters::Base do
|
|
39
39
|
subject { Yell::Adapters::Base.new :level => :info }
|
40
40
|
|
41
41
|
it "should delegate :event to :write!" do
|
42
|
-
event = Yell::Event.new(
|
42
|
+
event = Yell::Event.new( 1, "Hello World!" )
|
43
43
|
|
44
44
|
mock( subject ).write!( event )
|
45
45
|
|
@@ -47,7 +47,7 @@ describe Yell::Adapters::Base do
|
|
47
47
|
end
|
48
48
|
|
49
49
|
it "should not write when event does not have the right level" do
|
50
|
-
event = Yell::Event.new(
|
50
|
+
event = Yell::Event.new( 0, "Hello World!" )
|
51
51
|
|
52
52
|
dont_allow( subject ).write!( event )
|
53
53
|
|
@@ -4,7 +4,7 @@ describe Yell::Adapters::Datefile do
|
|
4
4
|
let( :time ) { Time.now }
|
5
5
|
let( :filename ) { 'filename.log' }
|
6
6
|
|
7
|
-
let( :event ) { Yell::Event.new(
|
7
|
+
let( :event ) { Yell::Event.new(1, "Hello World") }
|
8
8
|
|
9
9
|
describe :filename do
|
10
10
|
let( :adapter ) { Yell::Adapters::Datefile.new(:filename => filename) }
|
@@ -47,7 +47,7 @@ describe Yell::Adapters::Io do
|
|
47
47
|
end
|
48
48
|
|
49
49
|
context :write do
|
50
|
-
let( :event ) { Yell::Event.new(
|
50
|
+
let( :event ) { Yell::Event.new(1, "Hello World") }
|
51
51
|
let( :adapter ) { Yell::Adapters::Io.new }
|
52
52
|
let( :stream ) { File.new('/dev/null', 'w') }
|
53
53
|
|
data/spec/yell/event_spec.rb
CHANGED
@@ -1,11 +1,46 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
+
# Since Yell::Event.new is not called directly, but through
|
4
|
+
# the logger methods, we need to divert here in order to get
|
5
|
+
# the correct caller.
|
6
|
+
class EventFactory
|
7
|
+
def self.event( level, message )
|
8
|
+
self._event( level, message )
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def self._event( level, message )
|
14
|
+
Yell::Event.new level, message
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
3
19
|
describe Yell::Event do
|
4
|
-
|
20
|
+
context :caller do
|
21
|
+
let( :event ) { EventFactory.event 1, "Hello World" }
|
22
|
+
|
23
|
+
context :file do
|
24
|
+
subject { event.file }
|
25
|
+
it { should == __FILE__ }
|
26
|
+
end
|
27
|
+
|
28
|
+
context :line do
|
29
|
+
subject { event.line }
|
30
|
+
it { should == "8" }
|
31
|
+
end
|
32
|
+
|
33
|
+
context :method do
|
34
|
+
subject { event.method }
|
35
|
+
it { should == 'event' }
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
let(:event) { Yell::Event.new 1, 'Hello World!' }
|
5
40
|
|
6
41
|
context :level do
|
7
42
|
subject { event.level }
|
8
|
-
it { should ==
|
43
|
+
it { should == 1 }
|
9
44
|
end
|
10
45
|
|
11
46
|
context :message do
|
@@ -35,31 +70,4 @@ describe Yell::Event do
|
|
35
70
|
it { should == Process.pid }
|
36
71
|
end
|
37
72
|
|
38
|
-
context :caller do
|
39
|
-
let(:file) { "event.rb" }
|
40
|
-
let(:line) { "123" }
|
41
|
-
let(:method) { "test_method" }
|
42
|
-
|
43
|
-
before do
|
44
|
-
any_instance_of( Yell::Event ) do |e|
|
45
|
-
mock( e ).caller(4) { ["#{file}:#{line}:in `#{method}'"] }
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
context :file do
|
50
|
-
subject { event.file }
|
51
|
-
it { should == file }
|
52
|
-
end
|
53
|
-
|
54
|
-
context :line do
|
55
|
-
subject { event.line }
|
56
|
-
it { should == line }
|
57
|
-
end
|
58
|
-
|
59
|
-
context :method do
|
60
|
-
subject { event.method }
|
61
|
-
it { should == method }
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
73
|
end
|
data/spec/yell/formatter_spec.rb
CHANGED
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Yell::Formatter do
|
4
4
|
|
5
5
|
let( :formatter ) { Yell::Formatter.new(subject) }
|
6
|
-
let( :event ) { Yell::Event.new
|
6
|
+
let( :event ) { Yell::Event.new 1, 'Hello World!' }
|
7
7
|
let( :time ) { Time.now }
|
8
8
|
|
9
9
|
let( :format ) { formatter.format(event) }
|
@@ -48,11 +48,13 @@ describe Yell::Formatter do
|
|
48
48
|
end
|
49
49
|
|
50
50
|
context "caller" do
|
51
|
-
let( :_caller ) { ["/path/to/file.rb:123:in `test_method'"] }
|
51
|
+
let( :_caller ) { [nil, nil, "/path/to/file.rb:123:in `test_method'"] }
|
52
52
|
|
53
53
|
before do
|
54
54
|
any_instance_of( Yell::Event ) do |e|
|
55
|
-
|
55
|
+
stub(e).file { "/path/to/file.rb" }
|
56
|
+
stub(e).line { "123" }
|
57
|
+
stub(e).method { "test_method" }
|
56
58
|
end
|
57
59
|
end
|
58
60
|
|
@@ -92,4 +94,17 @@ describe Yell::Formatter do
|
|
92
94
|
it { format.should == "#{time.iso8601} [ INFO] #{$$} #{Socket.gethostname} : Hello World!" }
|
93
95
|
end
|
94
96
|
|
97
|
+
context "Exceptions" do
|
98
|
+
let( :exception ) { StandardError.new( "message" ) }
|
99
|
+
let( :event ) { Yell::Event.new( 1, exception ) }
|
100
|
+
|
101
|
+
subject { "%m" }
|
102
|
+
|
103
|
+
before do
|
104
|
+
mock( exception ).backtrace.times(any_times) { ["backtrace"] }
|
105
|
+
end
|
106
|
+
|
107
|
+
it { format.should == "#{exception.class}: #{exception.message}\n\tbacktrace" }
|
108
|
+
end
|
109
|
+
|
95
110
|
end
|
data/spec/yell/logger_spec.rb
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
+
class LoggerFactory
|
4
|
+
attr_accessor :logger
|
5
|
+
|
6
|
+
def foo
|
7
|
+
logger.info :foo
|
8
|
+
end
|
9
|
+
|
10
|
+
def bar
|
11
|
+
logger.info :bar
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
3
15
|
describe Yell::Logger do
|
4
16
|
|
5
17
|
context "a Logger instance" do
|
@@ -35,7 +47,7 @@ describe Yell::Logger do
|
|
35
47
|
end
|
36
48
|
end
|
37
49
|
|
38
|
-
context "
|
50
|
+
context "initialize with a :filename" do
|
39
51
|
it "should call adapter with :file" do
|
40
52
|
mock.proxy( Yell::Adapters::File ).new( :filename => 'test.log' )
|
41
53
|
|
@@ -43,7 +55,7 @@ describe Yell::Logger do
|
|
43
55
|
end
|
44
56
|
end
|
45
57
|
|
46
|
-
context "
|
58
|
+
context "initialize with a :stdout adapter" do
|
47
59
|
before do
|
48
60
|
mock.proxy( Yell::Adapters::Stdout ).new( anything )
|
49
61
|
end
|
@@ -57,7 +69,7 @@ describe Yell::Logger do
|
|
57
69
|
end
|
58
70
|
end
|
59
71
|
|
60
|
-
context "
|
72
|
+
context "initialize with a :stderr adapter" do
|
61
73
|
before do
|
62
74
|
mock.proxy( Yell::Adapters::Stderr ).new( anything )
|
63
75
|
end
|
@@ -71,7 +83,7 @@ describe Yell::Logger do
|
|
71
83
|
end
|
72
84
|
end
|
73
85
|
|
74
|
-
context "
|
86
|
+
context "initialize with a block" do
|
75
87
|
let( :level ) { Yell::Level.new :error }
|
76
88
|
let( :adapter ) { Yell::Adapters::Stdout.new }
|
77
89
|
|
@@ -94,5 +106,20 @@ describe Yell::Logger do
|
|
94
106
|
end
|
95
107
|
end
|
96
108
|
|
109
|
+
context "caller's :file, :line and :method" do
|
110
|
+
let( :adapter ) { Yell::Adapters::Stdout.new :format => "%F, %n: %M" }
|
111
|
+
let( :logger ) { Yell::Logger.new { |l| l.adapter adapter } }
|
112
|
+
|
113
|
+
it "should write correctly" do
|
114
|
+
factory = LoggerFactory.new
|
115
|
+
factory.logger = logger
|
116
|
+
|
117
|
+
mock( adapter.send(:stream) ).write( "#{__FILE__}, 7: foo\n" )
|
118
|
+
mock( adapter.send(:stream) ).write( "#{__FILE__}, 11: bar\n" )
|
119
|
+
|
120
|
+
factory.foo
|
121
|
+
factory.bar
|
122
|
+
end
|
123
|
+
end
|
97
124
|
end
|
98
125
|
|
metadata
CHANGED
@@ -1,56 +1,67 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: yell
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 8
|
8
|
+
- 0
|
9
|
+
version: 0.8.0
|
6
10
|
platform: ruby
|
7
|
-
authors:
|
11
|
+
authors:
|
8
12
|
- Rudolf Schmidt
|
9
13
|
autorequire:
|
10
14
|
bindir: bin
|
11
15
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
16
|
+
|
17
|
+
date: 2012-04-24 00:00:00 +02:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
15
21
|
name: rspec
|
16
|
-
requirement: &70348235288880 !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ! '>='
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '0'
|
22
|
-
type: :development
|
23
22
|
prerelease: false
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: '0'
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 0
|
29
|
+
version: "0"
|
33
30
|
type: :development
|
31
|
+
version_requirements: *id001
|
32
|
+
- !ruby/object:Gem::Dependency
|
33
|
+
name: rr
|
34
34
|
prerelease: false
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: '0'
|
35
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
segments:
|
40
|
+
- 0
|
41
|
+
version: "0"
|
44
42
|
type: :development
|
43
|
+
version_requirements: *id002
|
44
|
+
- !ruby/object:Gem::Dependency
|
45
|
+
name: timecop
|
45
46
|
prerelease: false
|
46
|
-
|
47
|
-
|
48
|
-
|
47
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
segments:
|
52
|
+
- 0
|
53
|
+
version: "0"
|
54
|
+
type: :development
|
55
|
+
version_requirements: *id003
|
56
|
+
description: Yell - Your Extensible Logging Library. Define multiple adapters, various log level combinations or message formatting options like you've never done before
|
49
57
|
email:
|
50
58
|
executables: []
|
59
|
+
|
51
60
|
extensions: []
|
61
|
+
|
52
62
|
extra_rdoc_files: []
|
53
|
-
|
63
|
+
|
64
|
+
files:
|
54
65
|
- .gitignore
|
55
66
|
- .travis.yml
|
56
67
|
- Gemfile
|
@@ -91,31 +102,37 @@ files:
|
|
91
102
|
- spec/yell/logger_spec.rb
|
92
103
|
- spec/yell_spec.rb
|
93
104
|
- yell.gemspec
|
105
|
+
has_rdoc: true
|
94
106
|
homepage: http://rudionrails.github.com/yell
|
95
107
|
licenses: []
|
108
|
+
|
96
109
|
post_install_message:
|
97
110
|
rdoc_options: []
|
98
|
-
|
111
|
+
|
112
|
+
require_paths:
|
99
113
|
- lib
|
100
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
requirements:
|
109
|
-
- -
|
110
|
-
- !ruby/object:Gem::Version
|
111
|
-
|
114
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
segments:
|
119
|
+
- 0
|
120
|
+
version: "0"
|
121
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
segments:
|
126
|
+
- 0
|
127
|
+
version: "0"
|
112
128
|
requirements: []
|
129
|
+
|
113
130
|
rubyforge_project: yell
|
114
|
-
rubygems_version: 1.
|
131
|
+
rubygems_version: 1.3.6
|
115
132
|
signing_key:
|
116
133
|
specification_version: 3
|
117
134
|
summary: Yell - Your Extensible Logging Library
|
118
|
-
test_files:
|
135
|
+
test_files:
|
119
136
|
- spec/spec_helper.rb
|
120
137
|
- spec/yell/adapters/base_spec.rb
|
121
138
|
- spec/yell/adapters/datefile_spec.rb
|
@@ -128,4 +145,3 @@ test_files:
|
|
128
145
|
- spec/yell/level_spec.rb
|
129
146
|
- spec/yell/logger_spec.rb
|
130
147
|
- spec/yell_spec.rb
|
131
|
-
has_rdoc:
|