cabin 0.1.6 → 0.1.7

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/CHANGELIST CHANGED
@@ -1,3 +1,6 @@
1
+ v0.1.7 (2011-11-07)
2
+ - Add support for ruby 1.8
3
+
1
4
  v0.1.6 (2011-11-07)
2
5
  - Add 'Dragons' mixin for times when info/debug/fatal log levels don't cut it
3
6
  and you'd rather deal in D&D alignments instead.
@@ -33,7 +33,28 @@ module Cabin::Mixins::Logger
33
33
 
34
34
  # def info, def warn, etc...
35
35
 
36
- define_method(level) do |message, data={}|
36
+ # Arguments: message, data, data is assumed to be {} if nil
37
+ # This hack is necessary because ruby 1.8 doesn't support default arguments
38
+ # on blocks.
39
+ define_method(level) do |*args| #|message, data={}|
40
+ if args.size < 1
41
+ raise ::ArgumentError.new("#{self.class.name}##{level}(message, " \
42
+ "data={}) requires at least 1 argument")
43
+ end
44
+ if args.size > 2
45
+ raise ::ArgumentError.new("#{self.class.name}##{level}(message, " \
46
+ "data={}) takes at most 2 arguments")
47
+ end
48
+
49
+ message = args[0]
50
+ data = args[1] || {}
51
+
52
+ if not data.is_a?(Hash)
53
+ raise ::ArgumentError.new("#{self.class.name}##{level}(message, " \
54
+ "data={}) - second argument you gave me was" \
55
+ "a #{data.class.name}, I require a Hash.")
56
+ end
57
+
37
58
  log(level, message, data) if send(predicate)
38
59
  end
39
60
 
data/test/test_logging.rb CHANGED
@@ -123,4 +123,20 @@ describe Cabin::Channel do
123
123
  assert(!event.include?(:line), "At non-debug level, there should not be a :line attribute")
124
124
  assert(!event.include?(:method), "At non-debug level, there should not be a :method attribute")
125
125
  end
126
+
127
+ test "invalid arguments to logger.info raises ArgumentError" do
128
+ assert_raises(ArgumentError, "logger.info() should raise ArgumentError") do
129
+ @logger.info()
130
+ end
131
+
132
+ assert_raises(ArgumentError, "logger.info('foo', 'bar') should raise " \
133
+ "ArgumentError because 'bar' is not a Hash.") do
134
+ @logger.info("foo", "bar")
135
+ end
136
+
137
+ assert_raises(ArgumentError, "logger.info('foo', { 'foo': 'bar' }, 'baz')" \
138
+ "should raise ArgumentError for too many arguments") do
139
+ @logger.info("foo", { "foo" => "bar" }, "bar")
140
+ end
141
+ end
126
142
  end # describe Cabin::Channel do
metadata CHANGED
@@ -1,97 +1,77 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: cabin
3
- version: !ruby/object:Gem::Version
4
- hash: 23
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.7
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 6
10
- version: 0.1.6
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Jordan Sissel
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-11-08 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2011-11-08 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: json
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &23531280 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
32
22
  type: :runtime
33
- version_requirements: *id001
34
- description: This is an experiment to try and make logging more flexible and more consumable. Plain text logs are bullshit, let's emit structured and contextual logs.
35
- email:
23
+ prerelease: false
24
+ version_requirements: *23531280
25
+ description: This is an experiment to try and make logging more flexible and more
26
+ consumable. Plain text logs are bullshit, let's emit structured and contextual logs.
27
+ email:
36
28
  - jls@semicomplete.com
37
- executables:
29
+ executables:
38
30
  - rubygems-cabin-test
39
31
  extensions: []
40
-
41
32
  extra_rdoc_files: []
42
-
43
- files:
44
- - lib/test.rb
45
- - lib/cabin/context.rb
46
- - lib/cabin/timer.rb
47
- - lib/cabin/outputs/stdlib-logger.rb
33
+ files:
34
+ - lib/cabin.rb
48
35
  - lib/cabin/outputs/em-stdlib-logger.rb
49
- - lib/cabin/mixins/logger.rb
50
- - lib/cabin/mixins/dragons.rb
51
- - lib/cabin/namespace.rb
36
+ - lib/cabin/outputs/stdlib-logger.rb
52
37
  - lib/cabin/channel.rb
53
- - lib/cabin.rb
38
+ - lib/cabin/namespace.rb
39
+ - lib/cabin/timer.rb
40
+ - lib/cabin/context.rb
41
+ - lib/cabin/mixins/dragons.rb
42
+ - lib/cabin/mixins/logger.rb
54
43
  - examples/fibonacci-timing.rb
55
44
  - examples/sinatra-logging.rb
56
45
  - examples/sample.rb
57
- - test/test_logging.rb
58
46
  - test/minitest-patch.rb
47
+ - test/test_logging.rb
59
48
  - LICENSE
60
49
  - CHANGELIST
61
50
  - bin/rubygems-cabin-test
62
51
  homepage: https://github.com/jordansissel/ruby-cabin
63
- licenses:
52
+ licenses:
64
53
  - Apache License (2.0)
65
54
  post_install_message:
66
55
  rdoc_options: []
67
-
68
- require_paths:
56
+ require_paths:
69
57
  - lib
70
58
  - lib
71
- required_ruby_version: !ruby/object:Gem::Requirement
59
+ required_ruby_version: !ruby/object:Gem::Requirement
72
60
  none: false
73
- requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- hash: 3
77
- segments:
78
- - 0
79
- version: "0"
80
- required_rubygems_version: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ! '>='
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
66
  none: false
82
- requirements:
83
- - - ">="
84
- - !ruby/object:Gem::Version
85
- hash: 3
86
- segments:
87
- - 0
88
- version: "0"
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
89
71
  requirements: []
90
-
91
72
  rubyforge_project:
92
- rubygems_version: 1.7.2
73
+ rubygems_version: 1.8.10
93
74
  signing_key:
94
75
  specification_version: 3
95
76
  summary: Experiments in structured and contextual logging
96
77
  test_files: []
97
-
data/lib/test.rb DELETED
@@ -1,8 +0,0 @@
1
- require "cabin"
2
- require "cabin/mixins/dragons"
3
-
4
- logger = Cabin::Channel.new
5
- logger.subscribe(Logger.new(STDOUT))
6
- logger.extend(Cabin::Mixins::Dragons)
7
-
8
- logger.chaotic_evil("Some shit is whack")