log_switch 0.4.0 → 1.0.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.
- 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
|