log_switch 0.4.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/History.rdoc +17 -1
- data/lib/log_switch.rb +124 -68
- data/lib/log_switch/version.rb +1 -1
- data/spec/log_switch_spec.rb +95 -87
- metadata +27 -324
- data/lib/log_switch/mixin.rb +0 -31
- data/spec/coverage/assets/0.5.3/app.js +0 -88
- data/spec/coverage/assets/0.5.3/fancybox/blank.gif +0 -0
- data/spec/coverage/assets/0.5.3/fancybox/fancy_close.png +0 -0
- data/spec/coverage/assets/0.5.3/fancybox/fancy_loading.png +0 -0
- data/spec/coverage/assets/0.5.3/fancybox/fancy_nav_left.png +0 -0
- data/spec/coverage/assets/0.5.3/fancybox/fancy_nav_right.png +0 -0
- data/spec/coverage/assets/0.5.3/fancybox/fancy_shadow_e.png +0 -0
- data/spec/coverage/assets/0.5.3/fancybox/fancy_shadow_n.png +0 -0
- data/spec/coverage/assets/0.5.3/fancybox/fancy_shadow_ne.png +0 -0
- data/spec/coverage/assets/0.5.3/fancybox/fancy_shadow_nw.png +0 -0
- data/spec/coverage/assets/0.5.3/fancybox/fancy_shadow_s.png +0 -0
- data/spec/coverage/assets/0.5.3/fancybox/fancy_shadow_se.png +0 -0
- data/spec/coverage/assets/0.5.3/fancybox/fancy_shadow_sw.png +0 -0
- data/spec/coverage/assets/0.5.3/fancybox/fancy_shadow_w.png +0 -0
- data/spec/coverage/assets/0.5.3/fancybox/fancy_title_left.png +0 -0
- data/spec/coverage/assets/0.5.3/fancybox/fancy_title_main.png +0 -0
- data/spec/coverage/assets/0.5.3/fancybox/fancy_title_over.png +0 -0
- data/spec/coverage/assets/0.5.3/fancybox/fancy_title_right.png +0 -0
- data/spec/coverage/assets/0.5.3/fancybox/fancybox-x.png +0 -0
- data/spec/coverage/assets/0.5.3/fancybox/fancybox-y.png +0 -0
- data/spec/coverage/assets/0.5.3/fancybox/fancybox.png +0 -0
- data/spec/coverage/assets/0.5.3/fancybox/jquery.fancybox-1.3.1.css +0 -363
- data/spec/coverage/assets/0.5.3/fancybox/jquery.fancybox-1.3.1.pack.js +0 -44
- data/spec/coverage/assets/0.5.3/favicon_green.png +0 -0
- data/spec/coverage/assets/0.5.3/favicon_red.png +0 -0
- data/spec/coverage/assets/0.5.3/favicon_yellow.png +0 -0
- data/spec/coverage/assets/0.5.3/highlight.css +0 -129
- data/spec/coverage/assets/0.5.3/highlight.pack.js +0 -1
- data/spec/coverage/assets/0.5.3/jquery-1.6.2.min.js +0 -18
- data/spec/coverage/assets/0.5.3/jquery.dataTables.min.js +0 -152
- data/spec/coverage/assets/0.5.3/jquery.timeago.js +0 -141
- data/spec/coverage/assets/0.5.3/jquery.url.js +0 -174
- data/spec/coverage/assets/0.5.3/loading.gif +0 -0
- data/spec/coverage/assets/0.5.3/magnify.png +0 -0
- data/spec/coverage/assets/0.5.3/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/spec/coverage/assets/0.5.3/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/spec/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/spec/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/spec/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/spec/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/spec/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/spec/coverage/assets/0.5.3/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/spec/coverage/assets/0.5.3/smoothness/images/ui-icons_222222_256x240.png +0 -0
- data/spec/coverage/assets/0.5.3/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
- data/spec/coverage/assets/0.5.3/smoothness/images/ui-icons_454545_256x240.png +0 -0
- data/spec/coverage/assets/0.5.3/smoothness/images/ui-icons_888888_256x240.png +0 -0
- data/spec/coverage/assets/0.5.3/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/spec/coverage/assets/0.5.3/smoothness/jquery-ui-1.8.4.custom.css +0 -295
- data/spec/coverage/assets/0.5.3/stylesheet.css +0 -383
- data/spec/coverage/assets/0.7.1/application.css +0 -1110
- data/spec/coverage/assets/0.7.1/application.js +0 -626
- data/spec/coverage/assets/0.7.1/fancybox/blank.gif +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_close.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_loading.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_nav_left.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_nav_right.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_shadow_e.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_shadow_n.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_shadow_ne.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_shadow_nw.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_shadow_s.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_shadow_se.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_shadow_sw.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_shadow_w.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_title_left.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_title_main.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_title_over.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancy_title_right.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancybox-x.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancybox-y.png +0 -0
- data/spec/coverage/assets/0.7.1/fancybox/fancybox.png +0 -0
- data/spec/coverage/assets/0.7.1/favicon_green.png +0 -0
- data/spec/coverage/assets/0.7.1/favicon_red.png +0 -0
- data/spec/coverage/assets/0.7.1/favicon_yellow.png +0 -0
- data/spec/coverage/assets/0.7.1/loading.gif +0 -0
- data/spec/coverage/assets/0.7.1/magnify.png +0 -0
- data/spec/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/spec/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/spec/coverage/assets/0.7.1/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/spec/coverage/assets/0.7.1/smoothness/images/ui-icons_222222_256x240.png +0 -0
- data/spec/coverage/assets/0.7.1/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
- data/spec/coverage/assets/0.7.1/smoothness/images/ui-icons_454545_256x240.png +0 -0
- data/spec/coverage/assets/0.7.1/smoothness/images/ui-icons_888888_256x240.png +0 -0
- data/spec/coverage/assets/0.7.1/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/spec/coverage/index.html +0 -81
- data/spec/log_switch/coverage/assets/0.5.3/app.js +0 -88
- data/spec/log_switch/coverage/assets/0.5.3/fancybox/blank.gif +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/fancybox/fancy_close.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/fancybox/fancy_loading.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/fancybox/fancy_nav_left.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/fancybox/fancy_nav_right.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/fancybox/fancy_shadow_e.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/fancybox/fancy_shadow_n.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/fancybox/fancy_shadow_ne.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/fancybox/fancy_shadow_nw.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/fancybox/fancy_shadow_s.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/fancybox/fancy_shadow_se.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/fancybox/fancy_shadow_sw.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/fancybox/fancy_shadow_w.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/fancybox/fancy_title_left.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/fancybox/fancy_title_main.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/fancybox/fancy_title_over.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/fancybox/fancy_title_right.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/fancybox/fancybox-x.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/fancybox/fancybox-y.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/fancybox/fancybox.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/fancybox/jquery.fancybox-1.3.1.css +0 -363
- data/spec/log_switch/coverage/assets/0.5.3/fancybox/jquery.fancybox-1.3.1.pack.js +0 -44
- data/spec/log_switch/coverage/assets/0.5.3/favicon_green.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/favicon_red.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/favicon_yellow.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/highlight.css +0 -129
- data/spec/log_switch/coverage/assets/0.5.3/highlight.pack.js +0 -1
- data/spec/log_switch/coverage/assets/0.5.3/jquery-1.6.2.min.js +0 -18
- data/spec/log_switch/coverage/assets/0.5.3/jquery.dataTables.min.js +0 -152
- data/spec/log_switch/coverage/assets/0.5.3/jquery.timeago.js +0 -141
- data/spec/log_switch/coverage/assets/0.5.3/jquery.url.js +0 -174
- data/spec/log_switch/coverage/assets/0.5.3/loading.gif +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/magnify.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/smoothness/images/ui-icons_222222_256x240.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/smoothness/images/ui-icons_454545_256x240.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/smoothness/images/ui-icons_888888_256x240.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/spec/log_switch/coverage/assets/0.5.3/smoothness/jquery-ui-1.8.4.custom.css +0 -295
- data/spec/log_switch/coverage/assets/0.5.3/stylesheet.css +0 -383
- data/spec/log_switch/coverage/index.html +0 -81
- data/spec/log_switch/mixin_spec.rb +0 -89
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 4867bb196cfc5e32a6d26bb00333e696784be8cf
|
4
|
+
data.tar.gz: e51462e07b1c9a0bac175a6c21321054fdcd638b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ddea293b90d0a3cdb83183c9024e48af3cb4ce474640da269dc85d8d7570c47c02c8cd4ab0e2a01a8262459c423b446523fbdc449ede02b178d463e84dc57d2b
|
7
|
+
data.tar.gz: 3edbe83b86a2962d19712fd8c11208bb37e47ad447c20b7de5c3795e7585ba2868969474691a487b875f87da04960b4f0decd59d3a65c9408d8ce7dc808d7f56
|
data/History.rdoc
CHANGED
@@ -1,3 +1,20 @@
|
|
1
|
+
=== 1.0.0 / 2014-10-10
|
2
|
+
|
3
|
+
* Improvements:
|
4
|
+
* LogSwitch can now be included in your own module, then that included in
|
5
|
+
other modules. This allows toggling logging per includer.
|
6
|
+
* Other stuff:
|
7
|
+
* Removed LogSwitch::Mixin in favor of simpler implementation.
|
8
|
+
* Bug fixes:
|
9
|
+
* gh-5[https://github.com/turboladen/log_switch/issues/5]: The improvements
|
10
|
+
listed above alleviate this problem.
|
11
|
+
|
12
|
+
=== 0.4.1 / 2013-01-04
|
13
|
+
|
14
|
+
* Bug fixes:
|
15
|
+
* Initialize @log before calling it, thus removing warnings when running with
|
16
|
+
-w.
|
17
|
+
|
1
18
|
=== 0.4.0 / 2012-11-12
|
2
19
|
|
3
20
|
* Improvements:
|
@@ -48,4 +65,3 @@
|
|
48
65
|
* +require+ and +extend+ to mix in to your class/module to get a single point of logging
|
49
66
|
* Switch on/off logging
|
50
67
|
* Use whatever Logger you want
|
51
|
-
|
data/lib/log_switch.rb
CHANGED
@@ -1,93 +1,149 @@
|
|
1
|
-
require
|
2
|
-
|
3
|
-
require File.expand_path(File.dirname(__FILE__) + '/log_switch/mixin')
|
1
|
+
require 'logger'
|
2
|
+
require_relative 'log_switch/version'
|
4
3
|
|
5
4
|
# LogSwitch allows for extending a class/module with a logger and, most
|
6
5
|
# importantly, allows for turning off logging programmatically. See the
|
7
6
|
# +README.rdoc+ for more info.
|
8
7
|
module LogSwitch
|
8
|
+
def self.included(base)
|
9
|
+
@includers ||= []
|
10
|
+
@includers << base
|
11
|
+
base.extend ClassMethods
|
12
|
+
base.send(:include, InstanceMethods)
|
9
13
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
14
|
+
base.class_eval do
|
15
|
+
def self.included(b)
|
16
|
+
b.extend ClassMethods
|
17
|
+
b.send :include, InstanceMethods
|
18
|
+
end
|
19
|
+
end
|
15
20
|
end
|
16
21
|
|
17
|
-
#
|
18
|
-
|
19
|
-
|
20
|
-
# @return [Class] The class that extended itself with LogSwitch.
|
21
|
-
def self.extender
|
22
|
-
@extender
|
22
|
+
# Defaults to a +Logger+ writing to STDOUT.
|
23
|
+
def self.logger
|
24
|
+
@logger ||= ::Logger.new STDOUT
|
23
25
|
end
|
24
26
|
|
25
|
-
|
26
|
-
|
27
|
+
def self.logger=(new_logger)
|
28
|
+
@logger = new_logger
|
29
|
+
end
|
27
30
|
|
28
|
-
#
|
29
|
-
|
31
|
+
# Sets back to defaults.
|
32
|
+
def self.reset_config!
|
33
|
+
self.logger = ::Logger.new STDOUT
|
30
34
|
|
31
|
-
|
32
|
-
|
35
|
+
@includers.each do |klass|
|
36
|
+
klass.logging_enabled = false
|
37
|
+
klass.log_class_name = true
|
38
|
+
end
|
39
|
+
end
|
33
40
|
|
34
|
-
|
35
|
-
|
41
|
+
module ClassMethods
|
42
|
+
# @param value [Boolean]
|
43
|
+
def logging_enabled
|
44
|
+
@@logging_enabled ||= false
|
45
|
+
end
|
36
46
|
|
37
|
-
|
38
|
-
|
39
|
-
@
|
40
|
-
|
47
|
+
# Tells whether logging is turned on or not.
|
48
|
+
#
|
49
|
+
# @param value [Boolean]
|
50
|
+
def logging_enabled?
|
51
|
+
!!logging_enabled
|
52
|
+
end
|
41
53
|
|
42
|
-
|
43
|
-
|
44
|
-
@
|
45
|
-
|
54
|
+
# Use to turn logging on or off.
|
55
|
+
#
|
56
|
+
# @param value [Boolean]
|
57
|
+
def logging_enabled=(value)
|
58
|
+
@@logging_enabled = value
|
59
|
+
end
|
46
60
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
61
|
+
# @return [Symbol] The current default log level. Starts off as :debug.
|
62
|
+
def default_log_level
|
63
|
+
@@default_log_level ||= :debug
|
64
|
+
end
|
51
65
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
end
|
66
|
+
# @param level [Symbol]
|
67
|
+
def default_log_level=(level)
|
68
|
+
@@default_log_level = level
|
69
|
+
end
|
57
70
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
71
|
+
# @return [Boolean] Tells whether logging of the class name with the log
|
72
|
+
# message is turned on.
|
73
|
+
def log_class_name?
|
74
|
+
log_class_name
|
75
|
+
end
|
76
|
+
|
77
|
+
def log_class_name
|
78
|
+
@@log_class_name ||= true
|
79
|
+
end
|
80
|
+
|
81
|
+
# Toggle prepending the class name of the #log caller to the log message.
|
82
|
+
def log_class_name=(value)
|
83
|
+
@@log_class_name = value
|
84
|
+
end
|
85
|
+
|
86
|
+
def logger
|
87
|
+
@@logger ||= LogSwitch.logger
|
88
|
+
end
|
89
|
+
|
90
|
+
def logger=(new_logger)
|
91
|
+
@@logger = new_logger
|
92
|
+
end
|
93
|
+
|
94
|
+
# {#log} calls the block given to this method before it logs every time.
|
95
|
+
# This, thus, acts as a hook in the case where you want to make sure some
|
96
|
+
# code gets executed before you log a message. Useful for making sure a file
|
97
|
+
# exists before logging to it.
|
98
|
+
#
|
99
|
+
# @param [Proc] block The block of code to execute before logging a message
|
100
|
+
# with {#log}.
|
101
|
+
def before_log=(block)
|
102
|
+
@@before_block ||= block
|
103
|
+
end
|
104
|
+
|
105
|
+
def before_log
|
106
|
+
@@before_block ||= Proc.new do; end
|
107
|
+
end
|
67
108
|
end
|
68
109
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
110
|
+
module InstanceMethods
|
111
|
+
def logger
|
112
|
+
self.class.logger
|
113
|
+
end
|
114
|
+
|
115
|
+
# Logs a message using the level provided. If no level provided, use
|
116
|
+
# +@log_level+.
|
117
|
+
#
|
118
|
+
# @param [String] message The message to log.
|
119
|
+
# @param [Symbol] level The log level to send to your Logger.
|
120
|
+
def log(message, level=nil)
|
121
|
+
level ||= self.class.default_log_level
|
122
|
+
|
123
|
+
self.class.before_log.call
|
124
|
+
yield if block_given?
|
125
|
+
|
126
|
+
if self.class.logging_enabled?
|
127
|
+
if message.respond_to? :each_line
|
128
|
+
message.each_line do |line|
|
129
|
+
msg = filter_class_name(line.chomp)
|
130
|
+
logger.send(level, msg)
|
131
|
+
end
|
132
|
+
else
|
133
|
+
message = filter_class_name(message)
|
134
|
+
logger.send(level, message)
|
135
|
+
end
|
83
136
|
end
|
84
137
|
end
|
85
|
-
end
|
86
138
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
139
|
+
private
|
140
|
+
|
141
|
+
def filter_class_name(message)
|
142
|
+
if self.class.log_class_name?
|
143
|
+
"<#{self.class.name}> #{message}"
|
144
|
+
else
|
145
|
+
message
|
146
|
+
end
|
147
|
+
end
|
92
148
|
end
|
93
149
|
end
|
data/lib/log_switch/version.rb
CHANGED
data/spec/log_switch_spec.rb
CHANGED
@@ -1,121 +1,129 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
|
-
|
4
|
-
def self.get_requires
|
5
|
-
Dir[File.dirname(__FILE__) + '/../lib/log_switch/**/*.rb']
|
6
|
-
end
|
3
|
+
class IncluderClass; include LogSwitch; end;
|
7
4
|
|
8
|
-
|
9
|
-
|
10
|
-
|
5
|
+
describe LogSwitch do
|
6
|
+
before { LogSwitch.reset_config! }
|
7
|
+
specify { expect(LogSwitch::VERSION).to eq '1.0.0' }
|
8
|
+
|
9
|
+
describe 'base class methods' do
|
10
|
+
describe ".included" do
|
11
|
+
it "sets @includers on the class object that extended" do
|
12
|
+
expect(described_class.instance_variable_get(:@includers)).
|
13
|
+
to include(IncluderClass)
|
14
|
+
end
|
15
|
+
end
|
11
16
|
|
12
|
-
|
13
|
-
|
14
|
-
|
17
|
+
describe ".logger" do
|
18
|
+
it "is a Logger by default" do
|
19
|
+
expect(described_class.logger).to be_a Logger
|
20
|
+
end
|
15
21
|
end
|
16
22
|
end
|
17
|
-
end
|
18
23
|
|
19
|
-
describe
|
20
|
-
|
21
|
-
class MyClass; extend LogSwitch; end;
|
22
|
-
example.run
|
23
|
-
MyClass.reset_config!
|
24
|
-
end
|
24
|
+
describe IncluderClass do
|
25
|
+
subject { IncluderClass.new }
|
25
26
|
|
26
|
-
|
27
|
+
describe ".logging_enabled?" do
|
28
|
+
specify { expect(described_class).to respond_to(:logging_enabled?) }
|
27
29
|
|
28
|
-
|
29
|
-
|
30
|
-
|
30
|
+
it 'defaults to false' do
|
31
|
+
expect(described_class.logging_enabled?).to eq false
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'can be set to true' do
|
35
|
+
described_class.logging_enabled = true
|
36
|
+
expect(described_class).to be_logging_enabled
|
37
|
+
end
|
31
38
|
end
|
32
|
-
end
|
33
39
|
|
34
|
-
|
35
|
-
|
36
|
-
|
40
|
+
describe ".logger" do
|
41
|
+
it "is a Logger by default" do
|
42
|
+
expect(described_class.logger).to be_a Logger
|
43
|
+
end
|
37
44
|
end
|
38
|
-
end
|
39
45
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
MyClass.logger = logger
|
45
|
-
MyClass.log("stuff", :meow)
|
46
|
+
describe ".default_log_level" do
|
47
|
+
it "defaults to :debug" do
|
48
|
+
expect(described_class.default_log_level).to eq :debug
|
49
|
+
end
|
46
50
|
end
|
47
51
|
|
48
|
-
|
49
|
-
|
52
|
+
describe ".log_class_name?" do
|
53
|
+
specify { expect(described_class).to respond_to(:log_class_name?) }
|
50
54
|
end
|
51
55
|
|
52
|
-
|
53
|
-
|
54
|
-
object.stub :test_in_block
|
55
|
-
object.should_receive(:test_in_block)
|
56
|
+
describe ".log_class_name" do
|
57
|
+
specify { expect(described_class).to respond_to(:log_class_name) }
|
56
58
|
|
57
|
-
|
59
|
+
it 'defaults to true' do
|
60
|
+
expect(described_class.log_class_name).to eq true
|
61
|
+
end
|
58
62
|
|
59
|
-
|
63
|
+
it 'can be set to false' do
|
64
|
+
pending "Can't figure out why this doesn't pass. It works live..."
|
65
|
+
described_class.log_class_name = false
|
66
|
+
expect(described_class.log_class_name).to eq false
|
67
|
+
end
|
60
68
|
end
|
61
69
|
|
62
|
-
|
63
|
-
it "
|
64
|
-
|
65
|
-
|
66
|
-
MyClass.log 'hi'
|
70
|
+
describe ".before_log" do
|
71
|
+
it "assigns the given block to @before_block" do
|
72
|
+
described_class.before_log = Proc.new { "I'm a block" }
|
73
|
+
expect(described_class.before_log).to be_a Proc
|
67
74
|
end
|
68
75
|
end
|
69
76
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
MyClass.logger.should_receive(:send).with(:debug, array)
|
74
|
-
expect { MyClass.log array }.to_not raise_exception
|
77
|
+
describe "#log" do
|
78
|
+
let(:logger) do
|
79
|
+
double "Logger"
|
75
80
|
end
|
76
81
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
82
|
+
let(:object) do
|
83
|
+
o = Object.new
|
84
|
+
allow(o).to receive :test_in_block
|
85
|
+
o
|
81
86
|
end
|
82
|
-
end
|
83
|
-
end
|
84
87
|
|
85
|
-
|
86
|
-
|
88
|
+
# before do
|
89
|
+
# described_class.logger = logger
|
90
|
+
# end
|
87
91
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
end
|
92
|
+
it "can log at any log level" do
|
93
|
+
#expect(logger).to receive(:send).with(:meow, "<IncluderClass> stuff")
|
94
|
+
subject.log("stuff", :meow)
|
95
|
+
end
|
93
96
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
97
|
+
it "can take a block" do
|
98
|
+
allow(logger).to receive(:send).with(:debug, "<IncluderClass> hi")
|
99
|
+
expect(object).to receive(:test_in_block)
|
100
|
+
subject.log('hi') { object.test_in_block }
|
101
|
+
end
|
99
102
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
103
|
+
context "with .before_log" do
|
104
|
+
it "calls the @before_block if that's set" do
|
105
|
+
allow(logger).to receive(:send).with(:debug, "<IncluderClass> hi")
|
106
|
+
described_class.before_log = Proc.new { puts "This is also before" }
|
107
|
+
expect(described_class.before_log).to receive(:call).once
|
108
|
+
subject.log 'hi'
|
109
|
+
end
|
110
|
+
end
|
105
111
|
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
112
|
+
context "can log non-String objects" do
|
113
|
+
it "an Array of various object types" do
|
114
|
+
array = [1, 'stuff', { :two => 2 }]
|
115
|
+
message = "<IncluderClass> #{array}"
|
116
|
+
allow(logger).to receive(:send).with(:debug, message)
|
117
|
+
expect { subject.log array }.to_not raise_exception
|
118
|
+
end
|
119
|
+
|
120
|
+
it "an Exception" do
|
121
|
+
ex = StandardError.new("Test error.")
|
122
|
+
message = "<IncluderClass> #{ex.message}"
|
123
|
+
allow(logger).to receive(:send).with(:debug, message)
|
124
|
+
expect { subject.log ex }.to_not raise_exception
|
125
|
+
end
|
126
|
+
end
|
110
127
|
end
|
111
128
|
end
|
112
|
-
|
113
|
-
describe ".log_class_name?" do
|
114
|
-
specify { MyClass.log_class_name?.should be_false }
|
115
|
-
|
116
|
-
specify {
|
117
|
-
MyClass.log_class_name = true
|
118
|
-
MyClass.log_class_name?.should be_true
|
119
|
-
}
|
120
|
-
end
|
121
129
|
end
|