relevance-log_buddy 0.1.5 → 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/CHANGELOG CHANGED
@@ -1,3 +1,5 @@
1
+ v0.2.0 Better log output of objects based on their type, very similiar to Logger/irb behavior; update to micronaut 0.1.0
2
+
1
3
  v0.1.5 Clean up specs and remove noise from spec run
2
4
 
3
5
  v0.1.4 Micronauts Unite! Test Suite now runs via Micronaut - http://github.com/spicycode/micronaut/
data/Manifest CHANGED
@@ -1,8 +1,4 @@
1
1
  CHANGELOG
2
- LICENSE
3
- Manifest
4
- README.rdoc
5
- Rakefile
6
2
  examples/example_helper.rb
7
3
  examples/log_buddy_example.rb
8
4
  examples/log_buddy_init_example.rb
@@ -13,3 +9,8 @@ lib/log_buddy/mixin.rb
13
9
  lib/log_buddy/utils.rb
14
10
  lib/log_buddy/version.rb
15
11
  lib/log_buddy.rb
12
+ LICENSE
13
+ log_buddy.gemspec
14
+ Manifest
15
+ Rakefile
16
+ README.rdoc
@@ -1,6 +1,6 @@
1
1
  require 'logger'
2
2
  require 'rubygems'
3
- gem 'spicycode-micronaut', "= 0.0.4"
3
+ gem 'spicycode-micronaut', "~> 0.1.0"
4
4
  gem 'mocha'
5
5
  require "mocha"
6
6
  require 'micronaut'
@@ -13,4 +13,8 @@ ensure
13
13
  $VERBOSE = old_verbose
14
14
  end
15
15
 
16
+ Micronaut.configure do |config|
17
+ config.mock_with :mocha
18
+ end
19
+
16
20
  Micronaut::Runner.autorun
@@ -45,14 +45,14 @@ describe LogBuddy::Mixin, " behavior" do
45
45
  d {'hi man'}
46
46
  end
47
47
 
48
- it "should log a plain arg" do
49
- LogBuddy.expects(:debug).with('hey yo')
48
+ it "should log a plain method call as is, nothing fancy" do
49
+ LogBuddy.expects(:debug).with("hey yo")
50
50
  d 'hey yo'
51
51
  end
52
52
 
53
- it "logs both if given an arg and a block" do
54
- LogBuddy.expects(:debug).with('hi mom')
55
- LogBuddy.expects(:debug).with(%[foo = 'foo'\n])
53
+ it "logs both argument and resulting value if using block from" do
54
+ LogBuddy.expects(:debug).with("hi mom")
55
+ LogBuddy.expects(:debug).with(%[foo = "foo"\n])
56
56
  foo = "foo"
57
57
  d("hi mom") { foo }
58
58
  end
@@ -62,32 +62,32 @@ describe LogBuddy::Mixin, " behavior" do
62
62
  end
63
63
 
64
64
  it "should output only local vars in the block" do
65
- LogBuddy.expects(:debug).with(%[a = 'foo'\n])
65
+ LogBuddy.expects(:debug).with(%[a = "foo"\n])
66
66
  b = "bad"
67
67
  a = "foo"
68
68
  d { a }
69
69
  end
70
70
 
71
71
  it "should output instance vars" do
72
- LogBuddy.expects(:debug).with(%[@a = 'foo'\n])
72
+ LogBuddy.expects(:debug).with(%[@a = "foo"\n])
73
73
  @a = "foo"
74
74
  d { @a }
75
75
  end
76
76
 
77
77
  it "should output constants" do
78
78
  FOO_CONST = "yo!"
79
- LogBuddy.expects(:debug).with(%[FOO_CONST = 'yo!'\n])
79
+ LogBuddy.expects(:debug).with(%[FOO_CONST = "yo!"\n])
80
80
  d { FOO_CONST }
81
81
  end
82
82
 
83
83
  it "should output class vars" do
84
- LogBuddy.expects(:debug).with(%[@@class_var = 'hi'\n])
84
+ LogBuddy.expects(:debug).with(%[@@class_var = "hi"\n])
85
85
  @@class_var = "hi"
86
86
  d { @@class_var }
87
87
  end
88
88
 
89
89
  it "should output method calls" do
90
- LogBuddy.expects(:debug).with(%[SomeModule.say_something("dude!!!!") = 'hello dude!!!!'\n])
90
+ LogBuddy.expects(:debug).with(%[SomeModule.say_something("dude!!!!") = "hello dude!!!!"\n])
91
91
  d { SomeModule.say_something("dude!!!!") }
92
92
  end
93
93
 
@@ -95,9 +95,9 @@ describe LogBuddy::Mixin, " behavior" do
95
95
  local1 = '1'
96
96
  local2 = '2'
97
97
  @ivar1 = '1'
98
- LogBuddy.expects(:debug).with(%[local1 = '1'\n])
99
- LogBuddy.expects(:debug).with(%[local2 = '2'\n])
100
- LogBuddy.expects(:debug).with(%[@ivar1 = '1'\n])
98
+ LogBuddy.expects(:debug).with(%[local1 = "1"\n])
99
+ LogBuddy.expects(:debug).with(%[local2 = "2"\n])
100
+ LogBuddy.expects(:debug).with(%[@ivar1 = "1"\n])
101
101
  d { local1; local2; @ivar1 }
102
102
  end
103
103
 
@@ -106,13 +106,57 @@ describe LogBuddy::Mixin, " behavior" do
106
106
  d { SomeModule.raise_runtime_error }
107
107
  end
108
108
 
109
+ it "logs things okay with inline rdoc" do
110
+ LogBuddy.stubs(:debug)
111
+ hsh = {:foo=>"bar", "key"=>"value"}
112
+ d { hsh } # hsh = {:foo=>"bar", "key"=>"value"}
113
+ end
114
+
115
+ it "logs inspected version of hashes and arrays" do
116
+ hsh = { :peanut_butter => "jelly", "awesome_numbers" => [3,7,22]}
117
+ different_hash_output_orders = [
118
+ %[hsh = {"awesome_numbers"=>[3, 7, 22], :peanut_butter=>"jelly"}\n],
119
+ %[hsh = {:peanut_butter=>"jelly", "awesome_numbers"=>[3, 7, 22]}\n]
120
+ ]
121
+ LogBuddy.logger.expects(:debug).with(any_of(*different_hash_output_orders))
122
+ d { hsh }
123
+ end
124
+
125
+ end
126
+
127
+ describe "obj_to_string" do
128
+ include LogBuddy::Utils
129
+
130
+ class Foo
131
+ def inspect
132
+ "inspeck yo-self"
133
+ end
134
+ end
135
+
136
+ it "logs string as-is" do
137
+ obj_to_string("foo").should == "foo"
138
+ end
139
+
140
+ it "logs exception with exception msg, type, and backtrace" do
141
+ begin
142
+ raise "bad mojo"
143
+ rescue Exception => exception
144
+ string = obj_to_string(exception)
145
+ string.should match /^bad mojo (RuntimeError)*/
146
+ string.should include(__FILE__)
147
+ end
148
+ end
149
+
150
+ it "logs all other objects with #inspect" do
151
+ obj_to_string(Foo.new).should == "inspeck yo-self"
152
+ end
109
153
  end
110
154
 
111
155
  describe "stdout" do
112
156
  before { Logger.any_instance.stubs(:debug) }
113
157
  it "logs to stdout as well as the default logger" do
114
158
  LogBuddy.init :log_to_stdout => true
115
- LogBuddy.expects(:stdout_puts).with(%["foo" = 'foo'\n])
159
+ LogBuddy.expects(:stdout_puts).with(%["foo" = "foo"\n])
116
160
  d { "foo" }
117
161
  end
118
162
 
data/examples.rb CHANGED
@@ -15,9 +15,17 @@ module Foo;
15
15
  end
16
16
 
17
17
 
18
- d "hi" # logs "hi" (regular old logging)
19
- d { a } # logs "a = 'foo'"
20
- d { @a } # logs "@a = 'my var'"
21
- d { @@bar } # logs "@@bar = 'class var!'"
22
- d { bark } # logs "bark = woof!"
23
- d { Foo::module_method } # logs Foo::module_method = 'hi!!'
18
+ # LogBuddy calls and their output:
19
+
20
+ d "hi" # hi
21
+ d { a } # a = "foo"
22
+ d { @a } # @a = "my var"
23
+ d { @@bar } # @@bar = "class var!"
24
+ d { bark } # bark = "woof!"
25
+ d { Foo::module_method } # Foo::module_method = "hi!!"
26
+
27
+ hsh = {:foo => "bar", "key" => "value"}
28
+ array = [1,2,3,4,"5"]
29
+
30
+ d { hsh }
31
+ d { array }
@@ -17,8 +17,7 @@ module LogBuddy
17
17
  logged_line = LogBuddy.read_line(caller[0])
18
18
  arguments = LogBuddy.parse_args(logged_line)
19
19
  arguments.each do |arg|
20
- result = eval(arg, blk.binding)
21
- LogBuddy.debug(%[#{arg} = '#{result}'\n])
20
+ LogBuddy.arg_and_blk_debug(arg, blk)
22
21
  end
23
22
  rescue RuntimeError => e
24
23
  LogBuddy.debug "LogBuddy caught an exception: #{e.message}"
@@ -1,19 +1,26 @@
1
1
  module LogBuddy
2
2
  module Utils
3
3
 
4
- def debug(str)
4
+ def debug(obj)
5
+ str = obj_to_string(obj)
5
6
  stdout_puts(str) if log_to_stdout?
6
7
  logger.debug(str)
7
8
  end
9
+
10
+ def arg_and_blk_debug(arg, blk)
11
+ result = eval(arg, blk.binding)
12
+ result_str = obj_to_string(result, :quote_strings => true)
13
+ LogBuddy.debug(%[#{arg} = #{result_str}\n])
14
+ end
8
15
 
9
16
  def stdout_puts(str)
10
17
  puts str
11
18
  end
12
-
19
+
13
20
  # Returns array of arguments in the block
14
- # You must ues the brace form (ie d { "hi" }) and not do...end
21
+ # You must use the brace form (ie d { "hi" }) and not do...end
15
22
  def parse_args(logged_line)
16
- block_contents = logged_line[/\{(.*)\}/, 1]
23
+ block_contents = logged_line[/\{(.*?)\}/, 1]
17
24
  args = block_contents.split(";").map {|arg| arg.strip }
18
25
  end
19
26
 
@@ -25,5 +32,19 @@ module LogBuddy
25
32
 
26
33
  lines[line_number - 1]
27
34
  end
35
+
36
+ def obj_to_string(obj, options = {})
37
+ quote_strings = options.delete(:quote_strings)
38
+ case obj
39
+ when ::String
40
+ quote_strings ? %["#{obj}"] : obj
41
+ when ::Exception
42
+ "#{ obj.message } (#{ obj.class })\n" <<
43
+ (obj.backtrace || []).join("\n")
44
+ else
45
+ obj.inspect
46
+ end
47
+ end
48
+
28
49
  end
29
50
  end
@@ -1,8 +1,8 @@
1
1
  module LogBuddy
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
- MINOR = 1
5
- TINY = 5
4
+ MINOR = 2
5
+ TINY = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
data/log_buddy.gemspec CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{log_buddy}
5
- s.version = "0.1.5"
5
+ s.version = "0.2.0"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Rob Sanheim - Relevance"]
9
- s.date = %q{2008-12-05}
9
+ s.date = %q{2008-12-09}
10
10
  s.description = %q{Log statements along with their name easily. Mixin a logger everywhere when you need it.}
11
11
  s.email = %q{opensource@thinkrelevance.com}
12
12
  s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README.rdoc", "lib/log_buddy/mixin.rb", "lib/log_buddy/utils.rb", "lib/log_buddy/version.rb", "lib/log_buddy.rb", "log_buddy.gemspec"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relevance-log_buddy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Sanheim - Relevance
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-12-05 00:00:00 -08:00
12
+ date: 2008-12-09 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency