growl-logger 0.1.3 → 0.2.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/growl-logger.rb +44 -10
- data/spec/growl-logger_spec.rb +40 -4
- metadata +2 -2
data/lib/growl-logger.rb
CHANGED
@@ -3,13 +3,14 @@ require 'rubygems'
|
|
3
3
|
require 'logger'
|
4
4
|
|
5
5
|
class GrowlLogger < Logger
|
6
|
-
VERSION = '0.
|
6
|
+
VERSION = '0.2.0'
|
7
7
|
|
8
8
|
def initialize(args = {})
|
9
9
|
super(GrowlLogger::LogDevice.new(
|
10
10
|
args[:name] || 'growl-logger',
|
11
11
|
args[:host] || 'localhost',
|
12
|
-
args[:
|
12
|
+
:mode => args[:mode],
|
13
|
+
:editor => args[:editor]
|
13
14
|
))
|
14
15
|
self.level = args[:level] if args[:level]
|
15
16
|
self.datetime_format = args[:datetime_format] || '%X'
|
@@ -17,28 +18,61 @@ class GrowlLogger < Logger
|
|
17
18
|
end
|
18
19
|
|
19
20
|
class LogDevice
|
20
|
-
def initialize(name, host,
|
21
|
+
def initialize(name, host, options = {}, &block)
|
21
22
|
@name = name
|
22
|
-
@
|
23
|
-
|
23
|
+
@mode = options[:mode] ? options[:mode].to_sym : nil
|
24
|
+
@editor = options[:editor] || 'mate -l'
|
25
|
+
unless @mode.to_s == 'growlnotify'
|
24
26
|
begin
|
25
|
-
require '
|
26
|
-
@
|
27
|
+
require 'meow'
|
28
|
+
@meow = Meow.new('log')
|
27
29
|
rescue LoadError
|
28
30
|
end
|
31
|
+
unless @meow
|
32
|
+
begin
|
33
|
+
require 'ruby-growl'
|
34
|
+
@growl = Growl.new host, @name, ["log"]
|
35
|
+
rescue LoadError
|
36
|
+
end
|
37
|
+
end
|
29
38
|
end
|
30
39
|
@formatter = block if block_given?
|
31
40
|
end
|
32
41
|
|
33
42
|
def write(message)
|
34
43
|
priority = get_priority(message)
|
35
|
-
|
36
|
-
|
44
|
+
case @mode
|
45
|
+
when :meow
|
46
|
+
notify_by_meow(message, priority)
|
47
|
+
when :'ruby-growl'
|
48
|
+
notify_by_rubygrowl(message, priority)
|
49
|
+
when :growlnotify
|
50
|
+
notify_by_growlnotify(message, priority)
|
37
51
|
else
|
38
|
-
|
52
|
+
if @meow then notify_by_meow(message, priority)
|
53
|
+
elsif @growl then notify_by_rubygrowl(message, priority)
|
54
|
+
else notify_by_growlnotify(message, priority)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def notify_by_meow(message, priority)
|
60
|
+
call_point = caller.last
|
61
|
+
line_number = call_point[/\d+$/]
|
62
|
+
file_name = call_point.sub(/:\d+$/, '')
|
63
|
+
@meow.notify @name, message, :priority => priority do
|
64
|
+
system *(@editor.split(/\s/) + [line_number, File.expand_path(file_name)])
|
39
65
|
end
|
40
66
|
end
|
41
67
|
|
68
|
+
def notify_by_rubygrowl(message, priority)
|
69
|
+
@growl.notify "log", @name, message, priority
|
70
|
+
end
|
71
|
+
|
72
|
+
def notify_by_growlnotify(message, priority)
|
73
|
+
system 'growlnotify', @name, '-p', priority.to_s, '-m', message
|
74
|
+
end
|
75
|
+
|
42
76
|
def get_priority(message)
|
43
77
|
case message
|
44
78
|
when /^DEBUG/
|
data/spec/growl-logger_spec.rb
CHANGED
@@ -12,7 +12,7 @@ describe GrowlLogger do
|
|
12
12
|
logdev.instance_eval{@name}.should == 'growl-logger'
|
13
13
|
logger.datetime_format.should == '%X'
|
14
14
|
logger.formatter.call('DEBUG', Time.now, 'foo', 'message').should == "DEBUG: message"
|
15
|
-
logdev.instance_eval{@
|
15
|
+
logdev.instance_eval{@mode}.should == nil
|
16
16
|
end
|
17
17
|
|
18
18
|
it 'init with name option' do
|
@@ -21,10 +21,46 @@ describe GrowlLogger do
|
|
21
21
|
logdev.instance_eval{@name}.should == 'foo'
|
22
22
|
end
|
23
23
|
|
24
|
-
it 'init
|
25
|
-
logger = GrowlLogger.new :
|
24
|
+
it 'init as growlnotify mode' do
|
25
|
+
logger = GrowlLogger.new :mode => :growlnotify
|
26
26
|
logdev = logger.instance_eval{@logdev}.dev
|
27
|
-
logdev.instance_eval{@
|
27
|
+
logdev.instance_eval{@mode}.should == :growlnotify
|
28
|
+
logdev.should_receive(:notify_by_growlnotify)
|
29
|
+
logdev.should_not_receive(:notify_by_meow)
|
30
|
+
logdev.should_not_receive(:notify_by_rubygrowl)
|
31
|
+
logdev.write('test')
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'init as meow mode' do
|
35
|
+
logger = GrowlLogger.new :mode => :meow
|
36
|
+
logdev = logger.instance_eval{@logdev}.dev
|
37
|
+
logdev.instance_eval{@mode}.should == :meow
|
38
|
+
logdev.should_receive(:notify_by_meow)
|
39
|
+
logdev.should_not_receive(:notify_by_growlnotify)
|
40
|
+
logdev.should_not_receive(:notify_by_rubygrowl)
|
41
|
+
logdev.write('test')
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'init as ruby-growl mode' do
|
45
|
+
logger = GrowlLogger.new :mode => 'ruby-growl'
|
46
|
+
logdev = logger.instance_eval{@logdev}.dev
|
47
|
+
logdev.instance_eval{@mode}.should == :'ruby-growl'
|
48
|
+
logdev.should_receive(:notify_by_rubygrowl)
|
49
|
+
logdev.should_not_receive(:notify_by_growlnotify)
|
50
|
+
logdev.should_not_receive(:notify_by_meow)
|
51
|
+
logdev.write('test')
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'not specify editor' do
|
55
|
+
logger = GrowlLogger.new
|
56
|
+
logdev = logger.instance_eval{@logdev}.dev
|
57
|
+
logdev.instance_eval{@editor}.should == 'mate -l'
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'specify editor' do
|
61
|
+
logger = GrowlLogger.new :editor => 'foo'
|
62
|
+
logdev = logger.instance_eval{@logdev}.dev
|
63
|
+
logdev.instance_eval{@editor}.should == 'foo'
|
28
64
|
end
|
29
65
|
|
30
66
|
it 'init with datetime_format option' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: growl-logger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jugyo
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-04-11 00:00:00 +09:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|