rack-insight 0.5.4 → 0.5.5

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rack-insight (0.5.3)
4
+ rack-insight (0.5.4)
5
5
  rack
6
6
  sqlite3 (>= 1.3.3)
7
7
  uuidtools (>= 2.1.2)
@@ -1,7 +1,7 @@
1
1
  require 'rack'
2
2
  require "digest/sha1"
3
3
  require "rack/insight/config"
4
- require "rack/insight/logger"
4
+ require "rack/insight/logging"
5
5
  require "rack/insight/filtered_backtrace"
6
6
  require "rack/insight/options"
7
7
  require "rack/insight/panel"
@@ -20,12 +20,12 @@ require 'rack/insight/panels-header'
20
20
 
21
21
  module Rack::Insight
22
22
  class App
23
- include Options
23
+ include Rack::Insight::Options
24
+ include Rack::Insight::Logging
25
+
24
26
  INSIGHT_ROOT = "/__insight__"
25
27
  INSIGHT_REGEX = %r{^#{INSIGHT_ROOT}}
26
28
 
27
- VERSION = "0.4.4"
28
-
29
29
  class SecurityError < StandardError
30
30
  end
31
31
 
@@ -34,16 +34,13 @@ module Rack::Insight
34
34
  @base_app = app
35
35
  @panels = []
36
36
  instance_eval(&block) if block_given?
37
-
38
- @logger = Logger.new(read_option(:log_level), read_option(:log_path))
39
- Thread.current['rack-insight.logger'] = @logger
40
37
  build_normal_stack
41
38
  build_debug_stack
39
+ # TODO: Understand when this would be used
42
40
  if options[:on_initialize]
43
41
  options[:on_initialize].call(self)
44
42
  end
45
43
  end
46
- attr_reader :logger
47
44
  attr_accessor :panels
48
45
 
49
46
  def call(env)
@@ -51,10 +48,6 @@ module Rack::Insight
51
48
  if insight_active?
52
49
  @env = env
53
50
  self.options = @default_options
54
-
55
- env['rack-insight.logger'] = @logger
56
- Thread.current['rack-insight.logger'] = @logger
57
-
58
51
  Rack::Insight.enable
59
52
  env["rack-insight.panels"] = []
60
53
  @debug_stack.call(env)
@@ -63,7 +56,6 @@ module Rack::Insight
63
56
  end
64
57
  end
65
58
 
66
-
67
59
  def reset(new_options=nil)
68
60
  @env = nil
69
61
  initialize_options(new_options)
@@ -168,17 +160,17 @@ module Rack::Insight
168
160
  def ip_authorized?
169
161
  return true unless options["rack-insight.ip_masks"]
170
162
 
171
- logger.debug{ "Checking #{@original_request.ip} against ip_masks" }
163
+ logger.info{ "Checking #{@original_request.ip} against ip_masks" } if verbose(:low)
172
164
  ip = IPAddr.new(@original_request.ip)
173
165
 
174
166
  mask = options["rack-insight.ip_masks"].find do |ip_mask|
175
167
  ip_mask.include?(ip)
176
168
  end
177
169
  if mask
178
- logger.debug{ "Matched #{mask}" }
170
+ logger.info{ "Matched #{mask}" } unless verbose(:silent)
179
171
  return true
180
172
  else
181
- logger.debug{ "Matched no masks" }
173
+ logger.info{ "Matched no masks" } unless verbose(:silent)
182
174
  return false
183
175
  end
184
176
  end
@@ -186,12 +178,12 @@ module Rack::Insight
186
178
  def password_authorized?
187
179
  return true unless options["rack-insight.password"]
188
180
 
189
- logger.debug{"Checking password"}
181
+ logger.info{"Checking password"} if verbose(:low)
190
182
 
191
183
  expected_sha = Digest::SHA1.hexdigest ["rack-insight", options["rack-insight.password"]].join(":")
192
184
  actual_sha = @original_request.cookies["rack-insight_password"]
193
185
 
194
- logger.debug{"Password result: #{actual_sha == expected_sha}"}
186
+ logger.info{"Password result: #{actual_sha == expected_sha}"} if verbose(:med)
195
187
  actual_sha == expected_sha
196
188
  end
197
189
  end
@@ -1,8 +1,13 @@
1
1
  module Rack::Insight
2
2
  class Config
3
3
  class << self
4
- attr_accessor :config
4
+ attr_reader :config, :verbosity, :log_file, :log_level, :rails_log_copy
5
5
  end
6
+ @log_file = STDOUT
7
+ @log_level = ::Logger::DEBUG
8
+ @logger = nil
9
+ @verbosity = true
10
+ @rails_log_copy = true
6
11
 
7
12
  DEFAULTS = {
8
13
  # You can augment or replace the default set of panel load paths.
@@ -13,18 +18,43 @@ module Rack::Insight
13
18
  # Rack::Insight::Config.configure do |config|
14
19
  # config[:panel_load_paths] << File::join('foo', 'bar')
15
20
  # end
16
- :panel_load_paths => [File::join('rack', 'insight', 'panels')]
21
+ :panel_load_paths => [File::join('rack', 'insight', 'panels')],
22
+ :logger => @logger,
23
+ :log_file => @log_file,
24
+ :log_level => @log_level,
25
+ :rails_log_copy => @rails_log_copy, # Only has effect when logger is the Rack::Insight::Logger, or a logger behaving like it
26
+ # Can set a specific verbosity: Rack::Insight::Logging::VERBOSITY[:debug]
27
+ :verbosity => @verbosity # true is equivalent to relying soley on the log level of each logged message
17
28
  }
18
29
 
19
- #cattr_reader :config
20
- #cattr_writer :config
21
-
22
30
  @config ||= DEFAULTS
23
31
  def self.configure &block
24
32
  yield @config
33
+ logger.debug("Config#configure:\n called from: #{caller[0]}\n with: #{@config}")
34
+ @logger = config[:logger]
35
+ @log_level = config[:log_level]
36
+ @log_file = config[:log_file]
37
+ @verbosity = config[:verbosity]
25
38
  unless config[:panel_load_paths].kind_of?(Array)
26
39
  raise "Rack::Insight::Config.config[:panel_load_paths] is invalid: Expected kind of Array but got #{config[:panel_load_paths].class}"
27
40
  end
28
41
  end
42
+
43
+ def self.logger
44
+ @logger ||= begin
45
+ logga = self.config[:logger]
46
+ if logga.nil?
47
+ warn ("Rack::Insight::Config#configure: logger is not configured, defaults to Ruby's Logger")
48
+ logga = ::Logger.new(log_file)
49
+ if logga.respond_to?(:level)
50
+ logga.level = self.log_level
51
+ elsif logga.respond_to?(:sev_threshold)
52
+ logga.sev_threshold = self.log_level
53
+ end
54
+ end
55
+ logga
56
+ end
57
+ end
58
+
29
59
  end
30
60
  end
@@ -90,7 +90,7 @@ module Rack::Insight
90
90
  end
91
91
 
92
92
  def execute(*args)
93
- logger.info{ ins_args = args.inspect; "(#{[ins_args.length,120].min}/#{ins_args.length})" + ins_args[0..120] }
93
+ #logger.info{ ins_args = args.inspect; "(#{[ins_args.length,120].min}/#{ins_args.length})" + ins_args[0..120] } if verbose(:debug)
94
94
  db.execute(*args)
95
95
  end
96
96
 
@@ -98,7 +98,7 @@ module Rack::Insight
98
98
  @table_name = table_name
99
99
  @keys = keys
100
100
  if(execute("select * from sqlite_master where name = ?", table_name).empty?)
101
- logger.warn{ "Initializing a table called #{table_name}" }
101
+ logger.info{ "Initializing a table called #{table_name}" } if verbose(:med)
102
102
  execute(create_sql)
103
103
  end
104
104
  end
@@ -1,5 +1,5 @@
1
1
  require 'rack/insight/instrumentation/backstage'
2
- require 'rack/insight/logger'
2
+ require 'rack/insight/logging'
3
3
 
4
4
  module Rack::Insight
5
5
  module Instrumentation
@@ -34,9 +34,9 @@ module Rack::Insight
34
34
  @collectors = nil
35
35
  end
36
36
 
37
- include Backstage
37
+ include Rack::Insight::Instrumentation::Backstage
38
38
 
39
- include Logging
39
+ include Rack::Insight::Logging
40
40
 
41
41
  def run(object, context="::", kind=:instance, called_at = caller[0], method = "<unknown>", args=[], &blk)
42
42
  file, line, rest = called_at.split(':')
@@ -62,14 +62,16 @@ module Rack::Insight
62
62
  collectors = probe_chain.inject([]) do |list, probe|
63
63
  probe.collectors(method_call.method)
64
64
  end
65
- logger.debug do
66
- "Probe chain for: #{method_call.context} #{method_call.kind} #{method_call.method}:\n #{collectors.map{|col| col.class.name}.join(", ")}"
65
+ if verbose(:debug)
66
+ logger.debug do
67
+ "Probe chain for: #{method_call.context} #{method_call.kind} #{method_call.method}:\n #{collectors.map{|col| col.class.name}.join(", ")}"
68
+ end
67
69
  end
68
70
  collectors
69
71
  end
70
72
 
71
73
  def start_event(method_call, arguments)
72
- logger.debug{ "Starting event: #{method_call.context} #{method_call.kind} #{method_call.method}" }
74
+ logger.debug{ "Starting event: #{method_call.context} #{method_call.kind} #{method_call.method}" } if verbose(:high)
73
75
 
74
76
  collectors_for(method_call).each do |collector|
75
77
  collector.before_detect(method_call, arguments)
@@ -78,7 +80,7 @@ module Rack::Insight
78
80
 
79
81
  def finish_event(method_call, arguments, start_time, result)
80
82
  timing = Timing.new(@start, start_time, Time.now)
81
- logger.debug{ "Finishing event: #{method_call.context} #{method_call.kind} #{method_call.method}" }
83
+ logger.debug{ "Finishing event: #{method_call.context} #{method_call.kind} #{method_call.method}" } if verbose(:high)
82
84
  collectors_for(method_call).each do |collector|
83
85
  collector.after_detect(method_call, timing, arguments, result)
84
86
  end
@@ -66,7 +66,8 @@ module Rack::Insight
66
66
  begin
67
67
  h[k] = self.new(const_from_name(k))
68
68
  rescue NameError
69
- logger.warn{ "Cannot find constant: #{k}" }
69
+ logger.warn{ "Cannot find constant: #{k}" } if verbose(:med)
70
+ false
70
71
  end
71
72
  end
72
73
  end
@@ -0,0 +1,33 @@
1
+ module Rack::Insight
2
+ module Logging
3
+ VERBOSITY = {
4
+ :debug => Logger::DEBUG,
5
+ :high => Logger::INFO,
6
+ :med => Logger::WARN,
7
+ :low => Logger::ERROR,
8
+ # Silent can be used with unless instead of if. Example:
9
+ # logger.info("some message") unless app.verbose(:silent)
10
+ :silent => Logger::FATAL
11
+ }
12
+
13
+ def logger
14
+ Rack::Insight::Config.logger
15
+ end
16
+ module_function :logger
17
+
18
+ # max_level is confusing because the 'level' of output goes up (and this is what max refers to)
19
+ # when the integer value goes DOWN
20
+ def verbose(max_level = false)
21
+ #logger.unknown "Rack::Insight::Config.verbosity: #{Rack::Insight::Config.verbosity} <= max_level: #{VERBOSITY[max_level]}" #for debugging the logger
22
+ return false if (!Rack::Insight::Config.verbosity) # false results in Exactly Zero output!
23
+ return true if (Rack::Insight::Config.verbosity == true) # Not checking truthy because need to check against max_level...
24
+ # Example: if configured log spam level is high (1) logger should get all messages that are not :debug (0)
25
+ # so, if a log statement has if verbose(:low) (:low is 3)
26
+ # 1 <= 3 # true => Message sent to logger
27
+ # then, if a log statement has if verbose(:debug) (:debug is 0)
28
+ # 1 <= 0 # false => Nothing sent to logger
29
+ return true if Rack::Insight::Config.verbosity <= (VERBOSITY[max_level]) # Integers!
30
+ end
31
+ module_function :verbose
32
+ end
33
+ end
@@ -1,5 +1,5 @@
1
1
  require "erb"
2
- require "rack/insight/logger"
2
+ require "rack/insight/logging"
3
3
  require 'rack/insight/database'
4
4
  require 'rack/insight/instrumentation'
5
5
  require 'rack/insight/render'
@@ -17,6 +17,7 @@ module Rack::Insight
17
17
  attr_reader :request
18
18
 
19
19
  class << self
20
+ attr_accessor :template_root
20
21
  def file_index
21
22
  return @file_index ||= Hash.new do |h,k|
22
23
  h[k] = []
@@ -40,7 +41,7 @@ module Rack::Insight
40
41
  Thread::current['rack-panel_file'] = old_rel
41
42
  end
42
43
 
43
- def current_panel_file
44
+ def current_panel_file(sub)
44
45
  return Thread::current['rack-panel_file'] ||
45
46
  begin
46
47
  file_name = nil
@@ -58,13 +59,14 @@ module Rack::Insight
58
59
  end
59
60
  break unless file_name.nil?
60
61
  end
62
+ sub.template_root = File.dirname(matched_line.split(':')[0]) if matched_line.respond_to?(:split)
61
63
  file_name
62
64
  end
63
65
  end
64
66
 
65
67
  def inherited(sub)
66
- if filename = current_panel_file
67
- Panel::file_index[current_panel_file] << sub
68
+ if filename = current_panel_file(sub)
69
+ Panel::file_index[filename] << sub
68
70
  else
69
71
  warn "Rack::Insight::Panel inherited by #{sub.name} outside rack-insight's :panel_load_paths. Discarded. Configured panel load paths are: #{Rack::Insight::Config.config[:panel_load_paths].inspect}"
70
72
  end
@@ -87,11 +89,11 @@ module Rack::Insight
87
89
 
88
90
  def call(env)
89
91
  @env = env
90
- logger.debug{ "Before call: #{self.name}" }
92
+ logger.debug{ "Before call: #{self.name}" } if verbose(:debug)
91
93
  before(env)
92
94
  status, headers, body = @app.call(env)
93
95
  @request = Rack::Request.new(env)
94
- logger.debug{ "After call: #{self.name}" }
96
+ logger.debug{ "After call: #{self.name}" } if verbose(:debug)
95
97
  after(env, status, headers, body)
96
98
  env["rack-insight.panels"] << self
97
99
  return [status, headers, body]
@@ -41,7 +41,7 @@ module Rack::Insight
41
41
 
42
42
  def content_for_request(number)
43
43
  queries = retrieve(number)
44
- logger.debug{ "ARes: #{queries.inspect}" }
44
+ logger.debug{ "ARes: #{queries.inspect}" } if verbose(:debug)
45
45
  render_template "panels/active_resource", :queries => queries
46
46
  end
47
47
  end
@@ -39,7 +39,7 @@ module Rack::Insight
39
39
  if(defined? Dalli and Dalli::Client === method_call.object)
40
40
  method, key = args[0], args[1]
41
41
  end
42
- logger.info{ "Cache panel got #{method} #{key.inspect}" }
42
+ logger.info{ "Cache panel got #{method} #{key.inspect}" } if verbose(:high)
43
43
  @stats.record_call(method, timing.duration, !result.nil?, key)
44
44
  end
45
45
 
@@ -58,7 +58,8 @@ module Rack::Insight
58
58
  end
59
59
 
60
60
  def content_for_request(number)
61
- logger.debug{{ :req_num => number }}
61
+ # TODO: What is this syntax with the double {{}}?
62
+ logger.debug{{ :req_num => number }} if verbose(:debug)
62
63
  stats = retrieve(number).first
63
64
  render_template "panels/cache", :stats => stats
64
65
  end
@@ -15,7 +15,7 @@ module Rack::Insight
15
15
  instrument "ActiveRecord::ConnectionAdapters::#{adapter}" do
16
16
  instance_probe :execute
17
17
  end
18
- end
18
+ end
19
19
  end
20
20
  table_setup("sql_queries")
21
21
  end
@@ -1,8 +1,8 @@
1
- require 'rack/insight/logger'
1
+ require 'rack/insight/logging'
2
2
 
3
3
  module Rack::Insight
4
4
  class PathFilter
5
- include Logging
5
+ include Rack::Insight::Logging
6
6
  def initialize(app)
7
7
  @app = app
8
8
  end
@@ -16,7 +16,7 @@ module Rack::Insight
16
16
  return [404, {}, []]
17
17
  end
18
18
 
19
- logger.debug{ "Shortcutting collection stack: #{filter} =~ #{env['PATH_INFO']}"}
19
+ logger.debug{ "Shortcutting collection stack: #{filter} =~ #{env['PATH_INFO']}"} if verbose(:debug)
20
20
  return @app.call(env)
21
21
  end
22
22
  end
@@ -49,26 +49,45 @@ module Rack::Insight
49
49
  end
50
50
  end
51
51
 
52
+ #def compiled_source(filename)
53
+ # primary_file_path = ::File.join(::File.dirname(__FILE__), "views/#{filename}.html.erb")
54
+ # file = nil
55
+ # begin
56
+ # file = ::File.read(primary_file_path)
57
+ # rescue Errno::ENOENT
58
+ # end
59
+ # if file.nil?
60
+ # Rack::Insight::Config.config[:panel_load_paths].each do |load_path|
61
+ # begin
62
+ # file = ::File.read(::File.join(load_path, "#{filename}.html.erb"))
63
+ # break # If no error is raised then the file was read!
64
+ # rescue Errno::ENOENT
65
+ # end
66
+ # end
67
+ # end
68
+ # if file
69
+ # ::ERB.new(file, nil, "-").src
70
+ # else
71
+ # logger.fatal("Rack::Insight: Unable to find expected view template #{primary_file_path} or a #{filename}.html.erb template in rack-insight's :panel_load_paths. Configured panel load paths are: #{Rack::Insight::Config.config[:panel_load_paths].inspect}")
72
+ # end
73
+ #end
74
+
52
75
  def compiled_source(filename)
53
- primary_file_path = ::File.join(::File.dirname(__FILE__), "views/#{filename}.html.erb")
76
+ templates = []
77
+ templates << ::File.join(::File.dirname(__FILE__), "views/#{filename}.html.erb")
78
+ templates << ::File.join(::File.join(self.class.template_root, "#{filename}.html.erb")) if self.class.respond_to?(:template_root)
54
79
  file = nil
55
- begin
56
- file = ::File.read(primary_file_path)
57
- rescue Errno::ENOENT
58
- end
59
- if file.nil?
60
- Rack::Insight::Config.config[:panel_load_paths].each do |load_path|
61
- begin
62
- file = ::File.read(::File.join(load_path, "#{filename}.html.erb"))
63
- break # If no error is raised then the file was read!
64
- rescue Errno::ENOENT
65
- end
80
+ templates.each do |template_path|
81
+ begin
82
+ file = ::File.read(template_path)
83
+ break # If no error is raised then the file was read!
84
+ rescue Errno::ENOENT
66
85
  end
67
86
  end
68
87
  if file
69
- return ::ERB.new(file, nil, "-").src
88
+ ::ERB.new(file, nil, "-").src
70
89
  else
71
- warn "Rack::Insight: Unable to find expected view template #{primary_file_path} or a #{filename}.html.erb template in rack-insight's :panel_load_paths. Configured panel load paths are: #{Rack::Insight::Config.config[:panel_load_paths].inspect}"
90
+ logger.fatal("Rack::Insight: Unable to find expected view template #{filename} in any of the following locations: #{templates.inspect}")
72
91
  end
73
92
  end
74
93
 
@@ -50,7 +50,7 @@ module Rack::Insight
50
50
  { :id => row[0], :method => row[1], :path => row[2] }
51
51
  end
52
52
 
53
- logger.info{ "Injecting toolbar: active panels: #{@insight.panels.map{|pnl| pnl.class.name}.inspect}" }
53
+ logger.info{ "Injecting toolbar: active panels: #{@insight.panels.map{|pnl| pnl.class.name}.inspect}" } unless verbose(:silent)
54
54
 
55
55
  headers_fragment = render_template("headers_fragment",
56
56
  :panels => @insight.panels,
@@ -1,7 +1,7 @@
1
1
  module Rack
2
2
  module Insight
3
3
 
4
- VERSION = '0.5.4'
4
+ VERSION = '0.5.5'
5
5
 
6
6
  end
7
7
  end
data/lib/rack/insight.rb CHANGED
@@ -3,6 +3,9 @@ require 'rack/insight/app'
3
3
  module Rack
4
4
  module Insight
5
5
  class << self
6
+
7
+ include Logging
8
+
6
9
  def enable
7
10
  Thread.current["rack-insight.enabled"] = true
8
11
  end
@@ -1 +1,6 @@
1
- class StarTrekPanel < Rack::Insight::Panel; end
1
+ class StarTrekPanel < Rack::Insight::Panel;
2
+
3
+ def content_for_request(number)
4
+ render_template "views/star_trek", :stats => {:captain => "Kirk", :ship => "Enterprise"}
5
+ end
6
+ end
@@ -0,0 +1,17 @@
1
+ <h3>StarTrek Panel!</h3>
2
+ <table id="StarTrek">
3
+ <thead>
4
+ <tr>
5
+ <th>
6
+ <%= stats[:ship] %>
7
+ </th>
8
+ </tr>
9
+ </thead>
10
+ <tbody>
11
+ <tr>
12
+ <td>
13
+ <%= stats[:captain] %>
14
+ </td>
15
+ </tr>
16
+ </tbody>
17
+ </table>
@@ -6,14 +6,16 @@ describe Rack::Insight::Config do
6
6
  before(:each) do
7
7
  Rack::Insight::Config.configure do |config|
8
8
  # spec folder is in the load path during specs!
9
- config[:panel_load_paths] << ['fixtures']
9
+ config[:panel_load_paths] << 'fixtures'
10
10
  end
11
11
  require 'fixtures/star_trek_panel'
12
12
  reset_insight :panel_files => %w{star_trek_panel}
13
13
  end
14
14
  it "should use StarTrekPanel" do
15
15
  app.insight_app.panel_classes.include?(StarTrekPanel).should be_true
16
- get_via_rack "/"
16
+ #get_via_rack "/"
17
+ response = get "/", :content_type => "application/xhtml+xml"
18
+ response.should have_selector("table#StarTrek", :content => 'Enterprise')
17
19
  end
18
20
  end
19
21
 
@@ -1,4 +1,5 @@
1
1
  require 'spec_helper'
2
+ require 'rack/insight/panels/active_record_panel'
2
3
 
3
4
  module Rack::Insight
4
5
  describe "ActiveRecordPanel" do
@@ -1,4 +1,5 @@
1
1
  require 'spec_helper'
2
+ require 'rack/insight/panels/cache_panel'
2
3
 
3
4
  module Rack::Insight
4
5
  describe "CachePanel" do
@@ -1,4 +1,5 @@
1
1
  require 'spec_helper'
2
+ require 'rack/insight/panels/log_panel'
2
3
 
3
4
  module Rack::Insight
4
5
  describe "LogPanel" do
@@ -1,4 +1,5 @@
1
1
  require 'spec_helper'
2
+ require 'rack/insight/panels/rails_info_panel'
2
3
 
3
4
  module Rack::Insight
4
5
  describe "RailsInfoPanel" do
@@ -1,4 +1,5 @@
1
1
  require 'spec_helper'
2
+ require 'rack/insight/panels/redis_panel'
2
3
 
3
4
  module Rack::Insight
4
5
  describe "RedisPanel" do
@@ -1,4 +1,5 @@
1
1
  require 'spec_helper'
2
+ require 'rack/insight/panels/sql_panel'
2
3
 
3
4
  module Rack::Insight
4
5
  describe "SQLPanel" do
@@ -1,4 +1,5 @@
1
1
  require 'spec_helper'
2
+ require 'rack/insight/panels/templates_panel'
2
3
 
3
4
  module Rack::Insight
4
5
  describe "TemplatesPanel" do
@@ -1,4 +1,5 @@
1
1
  require 'spec_helper'
2
+ require 'rack/insight/panels/timer_panel'
2
3
 
3
4
  module Rack::Insight
4
5
  describe "TimerPanel" do
data/spec/spec_helper.rb CHANGED
@@ -12,6 +12,14 @@ require "fixtures/sample_app"
12
12
  require "fixtures/dummy_panel"
13
13
  require "rack/insight/rspec_matchers"
14
14
 
15
+ # Will use the default Ruby Logger.
16
+ Rack::Insight::Config.configure do |config|
17
+ config[:verbosity] = Rack::Insight::Logging::VERBOSITY[:silent]
18
+ config[:log_level] = ::Logger::INFO
19
+ end
20
+ puts "Log Level for specs is #{::Logger::ERROR}"
21
+ puts "Verbosity level for specs is #{Rack::Insight::Logging::VERBOSITY.select {|k,v| v == Rack::Insight::Config.verbosity }.keys.first.inspect} or #{Rack::Insight::Config.verbosity}"
22
+
15
23
  RSpec.configure do |config|
16
24
  config.treat_symbols_as_metadata_keys_with_true_values = true
17
25
  config.run_all_when_everything_filtered = true
@@ -31,7 +39,6 @@ RSpec.configure do |config|
31
39
  config.include Rack::Insight::RspecMatchers
32
40
 
33
41
  config.before do
34
- Thread.current["rack-insight.logger"] = Rack::Insight::Logger.new(Logger::FATAL, "")
35
42
  @added_constants = []
36
43
  end
37
44
 
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.4
4
+ version: 0.5.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2012-08-30 00:00:00.000000000 Z
15
+ date: 2012-08-31 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rack
@@ -230,7 +230,7 @@ files:
230
230
  - lib/rack/insight/instrumentation/probe-definition.rb
231
231
  - lib/rack/insight/instrumentation/probe.rb
232
232
  - lib/rack/insight/instrumentation/setup.rb
233
- - lib/rack/insight/logger.rb
233
+ - lib/rack/insight/logging.rb
234
234
  - lib/rack/insight/options.rb
235
235
  - lib/rack/insight/panel.rb
236
236
  - lib/rack/insight/panel_app.rb
@@ -311,6 +311,7 @@ files:
311
311
  - spec/fixtures/dummy_panel.rb
312
312
  - spec/fixtures/sample_app.rb
313
313
  - spec/fixtures/star_trek_panel.rb
314
+ - spec/fixtures/views/star_trek.html.erb
314
315
  - spec/insight_spec.rb
315
316
  - spec/instrumentation_spec.rb
316
317
  - spec/rack/insight/config_spec.rb
@@ -359,6 +360,7 @@ test_files:
359
360
  - spec/fixtures/dummy_panel.rb
360
361
  - spec/fixtures/sample_app.rb
361
362
  - spec/fixtures/star_trek_panel.rb
363
+ - spec/fixtures/views/star_trek.html.erb
362
364
  - spec/insight_spec.rb
363
365
  - spec/instrumentation_spec.rb
364
366
  - spec/rack/insight/config_spec.rb
@@ -1,53 +0,0 @@
1
- module Rack::Insight
2
- class Logger
3
- def initialize(level, path)
4
- @level = level
5
- @log_path = path
6
- @logfile = nil
7
- end
8
-
9
- attr_accessor :level
10
-
11
- DEBUG = 0
12
- INFO = 1
13
- WARN = 2
14
- ERROR = 3
15
- FATAL = 4
16
- UNKNOWN = 5
17
-
18
- def log(severity, message)
19
- message = message.inspect unless String === message
20
- return unless severity >= @level
21
-
22
- if defined? Rails and Rails.respond_to?(:logger) and not Rails.logger.nil?
23
- Rails.logger.add(severity, "[Rack::Insight]: " + message)
24
- end
25
-
26
- logfile.puts(message)
27
- end
28
-
29
- def logfile
30
- @logfile ||= File::open(@log_path, "a+")
31
- rescue
32
- $stderr
33
- end
34
-
35
- def debug; log(DEBUG, yield) end
36
- def info; log(INFO, yield) end
37
- def warn; log(WARN, yield) end
38
- def error; log(ERROR, yield) end
39
- def fatal; log(FATAL, yield) end
40
- def unknown; log(UNKNOWN, yield) end
41
- end
42
-
43
- module Logging
44
- def logger(env = nil)
45
- if env.nil?
46
- Thread.current['rack-insight.logger'] ||= Rack::Insight::Logger.new(Logger::DEBUG, "")
47
- else
48
- env["rack-insight.logger"] ||= Rack::Insight::Logger.new(Logger::DEBUG, "")
49
- end
50
- end
51
- module_function :logger
52
- end
53
- end