rack-insight 0.5.12 → 0.5.13

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/.gitignore CHANGED
@@ -11,4 +11,3 @@ pkg/
11
11
  .sass-cache/
12
12
  .yardoc/
13
13
  gh-pages/
14
- aaaa
data/CHANGELOG CHANGED
@@ -1,5 +1,13 @@
1
1
  == HEAD
2
2
 
3
+ * New Features
4
+
5
+ * Panel level configuration options for all panels, including extension gems.
6
+ Currently this is implemented in the log_panel, and configured as:
7
+ Rack::Insight::Config.configure do |config|
8
+ config[:panel_configs][:log_panel] = {:watch => {'Logger' => :add}}
9
+ end
10
+ * Count number of Log Entries
3
11
 
4
12
  == 0.5.12 / 2012-09-10
5
13
 
@@ -7,7 +15,6 @@
7
15
 
8
16
  * Improving documentation by Peter Boling
9
17
 
10
-
11
18
  * New Features
12
19
 
13
20
  * persistent toolbar position by Alif Rachmawadi
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rack-insight (0.5.11)
4
+ rack-insight (0.5.12)
5
5
  rack
6
6
  sqlite3 (>= 1.3.3)
7
7
  uuidtools (>= 2.1.2)
data/README.md CHANGED
@@ -1,19 +1,22 @@
1
1
  Rack::Insight
2
- =========
3
-
4
- Rack::Insight began life as an fork of Logical::Insight by LRDesign. I started a
5
- fork because LogicalInsight was namespaced as "Insight", which is causing namespace
6
- collisions everywhere I have an Insight model. I had to re-namespace all the code.
7
- I also needed to build a few extension gems with additional panels, and added the
8
- Config class to allow for custom panel load paths, and other future extensions
9
- that don't work in the *use Middleware* declaration. It should be *even* easier
10
- to extend than LogicalInsight was, because extension gems can access the Config class
2
+ =============
3
+
4
+ Rack::Insight began life as an fork of Logical::Insight by LRDesign.
5
+
6
+ * I started a fork because:
7
+ * LogicalInsight was namespaced as "Insight"
8
+ * Causing namespace collisions everywhere I have an Insight model. I had to re-namespace all the code.
9
+ * I also needed to build a few extension gems with additional panels, which didn't fully work in LI
10
+ * Added the Config class to allow for custom panel load paths
11
+ and many other extensions that don't work in the *use Middleware* declaration.
12
+
13
+ It should be *even* easier to extend than LogicalInsight was, because extension gems can access the Config class
11
14
  and truly bolt-on cleanly.
12
15
 
13
16
  Having made really significant architectural changes, I'll be keeping Rack::Insight
14
- a separate project for the forseeable future.
17
+ a separate project for the foreseeable future.
15
18
 
16
- * Forked From: [logical-insight](http://github.com/LRDesign/logical-insight), [documentation](http://lrdesign.github.com/rack-insight/)
19
+ * Forked From: [logical-insight](http://github.com/LRDesign/logical-insight)
17
20
  * Which Was Forked From: [rack-bug](http://github.com/brynary/rack-bug)
18
21
 
19
22
  Description
@@ -33,12 +36,12 @@ Features
33
36
  * Rails Info
34
37
  * Timer
35
38
  * Request Variables
36
- * SQL
37
- * Active Record
38
39
  * Cache
39
40
  * Templates
40
- * Log
41
+ * Log (can configure which loggers to watch!)
41
42
  * Memory
43
+ * SQL (Failing specs, and I don't use it, someone please pull me a fix!)
44
+ * Active Record (Failing specs, and I don't use it, someone please pull me a fix!)
42
45
  * Other bundled panels:
43
46
  * Redis
44
47
  * Speedtracer
@@ -49,7 +52,7 @@ Features
49
52
  * Consistent interface to instrument application code
50
53
  * Consistent timing across panels
51
54
  * Easy to add sub-applications for more detailed reports (c.f. SQLPanel)
52
- * The documentation is scarce, so there's a feeling of adventure :/
55
+ * Ask me (pboling) if you need help with this.
53
56
 
54
57
  Rails quick start
55
58
  ---------------------------
@@ -105,6 +108,24 @@ Options:
105
108
  :panel_load_paths => [File::join('rack', 'insight', 'panels')] (default)
106
109
  See *Configuring custom panels* section for example usage
107
110
 
111
+ :panel_configs => This is a nested config, se below:
112
+
113
+ Panel level configuration options for all panels, including extension gems.
114
+ Currently this is implemented in the log_panel, and configured as:
115
+
116
+ Rack::Insight::Config.configure do |config|
117
+ config[:panel_configs][:log_panel] = {:watch => {'Logger' => :add}}
118
+ end
119
+
120
+ Example: If you want all of your log statements in Rails to be traced twice by Rack::Insight,
121
+ this will do that because ActiveSupport::BufferedLogger utilizes Logger under the hood:
122
+
123
+ config[:panel_configs][:log_panel] = {:watch => {
124
+ "ActiveSupport::BufferedLogger" => :add,
125
+ "Logger" => :add
126
+ }}
127
+
128
+
108
129
  Configure Middleware
109
130
  --------------------
110
131
 
@@ -207,7 +228,7 @@ and Rack::Cache
207
228
  License
208
229
  -------
209
230
 
210
- See LICENSE in this directory.
231
+ MIT. See LICENSE in this directory.
211
232
 
212
233
  Notes
213
234
  -----
@@ -9,6 +9,7 @@ module Rack::Insight
9
9
  @verbosity = true
10
10
  @rails_log_copy = true
11
11
  @filtered_backtrace = true
12
+ @panel_configs = {}
12
13
 
13
14
  DEFAULTS = {
14
15
  # You can augment or replace the default set of panel load paths.
@@ -26,7 +27,8 @@ module Rack::Insight
26
27
  :rails_log_copy => @rails_log_copy, # Only has effect when logger is the Rack::Insight::Logger, or a logger behaving like it
27
28
  # Can set a specific verbosity: Rack::Insight::Logging::VERBOSITY[:debug]
28
29
  :verbosity => @verbosity, # true is equivalent to relying soley on the log level of each logged message
29
- :filtered_backtrace => @filtered_backtrace # Full backtraces, or filtered ones?
30
+ :filtered_backtrace => @filtered_backtrace, # Full backtraces, or filtered ones?
31
+ :panel_configs => @panel_configs # Allow specific panels to have their own configurations, and make it extensible
30
32
  }
31
33
 
32
34
  @config ||= DEFAULTS
@@ -38,9 +40,13 @@ module Rack::Insight
38
40
  @log_file = config[:log_file]
39
41
  @verbosity = config[:verbosity]
40
42
  @filtered_backtrace = config[:filtered_backtrace]
43
+ @panel_configs = config[:panel_configs]
41
44
  unless config[:panel_load_paths].kind_of?(Array)
42
45
  raise "Rack::Insight::Config.config[:panel_load_paths] is invalid: Expected kind of Array but got #{config[:panel_load_paths].class}"
43
46
  end
47
+ unless config[:panel_configs].kind_of?(Hash)
48
+ raise "Rack::Insight::Config.config[:panel_configs] is invalid: Expected kind of Hash but got #{config[:panel_configs].class}"
49
+ end
44
50
  end
45
51
 
46
52
  def self.logger
@@ -30,7 +30,10 @@ module Rack::Insight
30
30
  def retrieve(request_id)
31
31
  @table.for_request(request_id)
32
32
  end
33
- alias retreive retrieve #JDL cannot spell
33
+
34
+ def count(request_id)
35
+ @table.count_for_request(request_id)
36
+ end
34
37
 
35
38
  def table_length
36
39
  @table.length
@@ -107,6 +110,10 @@ module Rack::Insight
107
110
  execute("select #{which_sql} from #@table_name where #{condition_sql}")
108
111
  end
109
112
 
113
+ def count(condition_sql)
114
+ execute("select count(*) from #@table_name where #{condition_sql}")
115
+ end
116
+
110
117
  def fields_sql
111
118
  "#{@keys.join(",")}"
112
119
  end
@@ -179,10 +186,18 @@ module Rack::Insight
179
186
  select("value", key_sql).map{|value| decode_value(value.first)}
180
187
  end
181
188
 
189
+ def count_entries(key_sql)
190
+ count(key_sql).first.first
191
+ end
192
+
182
193
  def for_request(id)
183
194
  retrieve("request_id = #{id}")
184
195
  end
185
196
 
197
+ def count_for_request(id)
198
+ count_entries("request_id = #{id}")
199
+ end
200
+
186
201
  def to_a
187
202
  super.map do |row|
188
203
  row[-1] = decode_value(row[-1])
@@ -57,8 +57,6 @@ module Rack::Insight
57
57
  end
58
58
 
59
59
  def content_for_request(number)
60
- # TODO: What is this syntax with the double {{}}?
61
- logger.debug{{ :req_num => number }} if verbose(:debug)
62
60
  stats = retrieve(number).first
63
61
  render_template "panels/cache", :stats => stats
64
62
  end
@@ -23,12 +23,27 @@ module Rack::Insight
23
23
 
24
24
  def initialize(app)
25
25
  probe(self) do
26
- instrument "ActiveSupport::BufferedLogger" do
27
- instance_probe :add
28
- end
29
-
30
- instrument "Logger" do
31
- instance_probe :add
26
+ if !Rack::Insight::Config.config[:panel_configs][:log_panel].respond_to?(:[])
27
+ # Trying to be smart...
28
+ if defined?(ActiveSupport)
29
+ instrument "ActiveSupport::BufferedLogger" do
30
+ instance_probe :add
31
+ end
32
+ else
33
+ instrument "Logger" do
34
+ instance_probe :add
35
+ end
36
+ end
37
+ else
38
+ # User has explicitly declared what log classes to monitor:
39
+ # Rack::Insight::Config.configure do |config|
40
+ # config[:panel_configs][:log_panel] = {:watch => {'Logger' => :add}}
41
+ # end
42
+ Rack::Insight::Config.config[:panel_configs][:log_panel][:watch].each do |klass, method_probe|
43
+ instrument klass do
44
+ instance_probe method_probe
45
+ end
46
+ end
32
47
  end
33
48
  end
34
49
 
@@ -41,8 +56,9 @@ module Rack::Insight
41
56
  "log"
42
57
  end
43
58
 
44
- def heading
45
- "Log"
59
+ def heading_for_request(number)
60
+ num = count(number)
61
+ "Logs (#{num})"
46
62
  end
47
63
 
48
64
  def content_for_request(number)
@@ -1,7 +1,7 @@
1
1
  module Rack
2
2
  module Insight
3
3
 
4
- VERSION = '0.5.12'
4
+ VERSION = '0.5.13'
5
5
 
6
6
  end
7
7
  end
@@ -3,7 +3,7 @@
3
3
  <thead>
4
4
  <tr>
5
5
  <th>Level</th>
6
- <th>Time</th>
6
+ <th>&#916 Time</th>
7
7
  <th>Message</th>
8
8
  </tr>
9
9
  </thead>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-insight
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.12
4
+ version: 0.5.13
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: