rack-insight 0.5.12 → 0.5.13

Sign up to get free protection for your applications and to get access to all the features.
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: