hoover 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +7 -0
- data/README.md +14 -1
- data/hoover.gemspec +2 -1
- data/lib/hoover.rb +11 -0
- data/lib/hoover/job.rb +2 -1
- data/lib/hoover/log_subscribers/action_controller_log_subscriber.rb +16 -8
- data/lib/hoover/log_subscribers/action_mailer_log_subscriber.rb +2 -2
- data/lib/hoover/log_subscribers/action_view_log_subscriber.rb +1 -15
- data/lib/hoover/log_subscribers/active_resource_log_subscriber.rb +1 -1
- data/lib/hoover/rack_logger.rb +1 -0
- data/lib/hoover/railtie.rb +0 -6
- data/lib/hoover/version.rb +1 -1
- data/spec/action_controller_log_subscrier_spec.rb +177 -0
- data/spec/action_mailer_log_subscriber_spec.rb +26 -0
- data/spec/active_resource_log_subscriber_spec.rb +47 -0
- metadata +30 -13
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
## Version 0.0.6 - Oct 26, 2011
|
2
|
+
|
3
|
+
* Remove ActionView log subscriber contents (not useful to me, and triggers the loggly hash-in-array bug)
|
4
|
+
* Polish and specs for ActionController, ActiveResource, and ActionMailer log subscribers (derived from live test
|
5
|
+
against Rails 3.0.9
|
6
|
+
* Send an INFO message to main Rails logger so you can see what was sent to Loggly
|
7
|
+
|
1
8
|
## Version 0.0.5 - Oct 24, 2011
|
2
9
|
|
3
10
|
* Sanitize hash objects coming in instead of relying on implicit to_json which sometimes crashes.
|
data/README.md
CHANGED
@@ -17,6 +17,12 @@ If you are using Rails 3, then there are prewritten log subscribers that pass mo
|
|
17
17
|
the normal rails log in a simplified and convenient JSON format.
|
18
18
|
|
19
19
|
|
20
|
+
## Requirements
|
21
|
+
|
22
|
+
Hoover is designed to work w/ Ruby 1.8.7 or 1.9.2+ and any Rack framework. That said, it has been developed under Rails
|
23
|
+
3.0.9 with 1.8.7. Other Rack frameworks are probably pretty rough at this point (but please send suggestions!).
|
24
|
+
|
25
|
+
|
20
26
|
## Installation
|
21
27
|
|
22
28
|
You're using bundler right?
|
@@ -54,12 +60,19 @@ If you add with the same key more than once, Hoover automatically rolls it up in
|
|
54
60
|
|
55
61
|
## Todo
|
56
62
|
|
63
|
+
* Provide sensible defaults for generic Rack logging. Any ideas?
|
57
64
|
* Provide config option to set the logglier during Rails initialization, thus guaranteeing its presence beyond what is
|
58
65
|
possible with simple ActionController filters.
|
59
|
-
* Write specs for Rails components.
|
60
66
|
* Provide config option to choose which log subscribers to enable.
|
61
67
|
|
62
68
|
|
69
|
+
## Known Issues
|
70
|
+
|
71
|
+
* As of this writing, Loggly's JSON API does not handle hashes nested inside arrays properly. Each hash ends up looking
|
72
|
+
like [object Object] in the search console. This totally breaks Hoover's automatic stacking of duplicate adds, but
|
73
|
+
hopefully they'll have it fixed soon.
|
74
|
+
|
75
|
+
|
63
76
|
## Contributing to Hoover
|
64
77
|
|
65
78
|
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
|
data/hoover.gemspec
CHANGED
@@ -17,10 +17,11 @@ Gem::Specification.new do |s|
|
|
17
17
|
|
18
18
|
s.require_paths = [%q{lib}]
|
19
19
|
|
20
|
-
s.add_dependency "logglier", ["~> 0.2.
|
20
|
+
s.add_dependency "logglier", ["~> 0.2.5"]
|
21
21
|
|
22
22
|
s.add_development_dependency "bundler"
|
23
23
|
s.add_development_dependency "rake"
|
24
24
|
s.add_development_dependency "minitest"
|
25
25
|
s.add_development_dependency "mocha"
|
26
|
+
s.add_development_dependency "rails", ["~> 3.1.0"]
|
26
27
|
end
|
data/lib/hoover.rb
CHANGED
@@ -3,6 +3,12 @@ require 'hoover/job'
|
|
3
3
|
require 'hoover/railtie' if defined?(Rails)
|
4
4
|
|
5
5
|
module Hoover
|
6
|
+
autoload :ActionControllerLogSubscriber, 'hoover/log_subscribers/action_controller_log_subscriber'
|
7
|
+
autoload :ActionMailerLogSubscriber, 'hoover/log_subscribers/action_mailer_log_subscriber'
|
8
|
+
autoload :ActionViewLogSubscriber, 'hoover/log_subscribers/action_view_log_subscriber'
|
9
|
+
autoload :ActiveResourceLogSubscriber, 'hoover/log_subscribers/active_resource_log_subscriber'
|
10
|
+
autoload :ActiveRecordLogSubscriber, 'hoover/log_subscribers/active_record_log_subscriber'
|
11
|
+
|
6
12
|
class << self
|
7
13
|
def init(logglier = nil)
|
8
14
|
self.active_job = Job.new(logglier)
|
@@ -25,6 +31,11 @@ module Hoover
|
|
25
31
|
active_job.add(*args)
|
26
32
|
end
|
27
33
|
|
34
|
+
def hash(*args)
|
35
|
+
raise "Must init Hoover before calling hash" unless active_job
|
36
|
+
active_job.hash
|
37
|
+
end
|
38
|
+
|
28
39
|
def logglier=(logglier)
|
29
40
|
raise "Must init Hoover before setting logglier" unless active_job
|
30
41
|
active_job.logglier = logglier
|
data/lib/hoover/job.rb
CHANGED
@@ -25,6 +25,7 @@ module Hoover
|
|
25
25
|
def post
|
26
26
|
raise "cannot post until logglier is set" unless ready_to_post?
|
27
27
|
@hash.each{ |k,v| @hash[k] = @hash[k].first if v.size == 1 }
|
28
|
+
Rails.logger.info " Hoover sending keys #{@hash.keys.inspect} to Loggly" if defined?(Rails) && Rails.logger
|
28
29
|
@logglier.info(@hash)
|
29
30
|
end
|
30
31
|
|
@@ -42,7 +43,7 @@ module Hoover
|
|
42
43
|
|
43
44
|
def sanitize_object(value)
|
44
45
|
case value
|
45
|
-
when String, Fixnum, Date, Time, NilClass
|
46
|
+
when String, Fixnum, Float, Date, Time, NilClass
|
46
47
|
value
|
47
48
|
else
|
48
49
|
value.to_s
|
@@ -1,3 +1,6 @@
|
|
1
|
+
require 'action_controller'
|
2
|
+
require 'active_support/core_ext/hash/except'
|
3
|
+
|
1
4
|
module Hoover
|
2
5
|
class ActionControllerLogSubscriber < ActiveSupport::LogSubscriber
|
3
6
|
INTERNAL_PARAMS = %w(controller action format _method only_path)
|
@@ -16,26 +19,32 @@ module Hoover
|
|
16
19
|
payload = event.payload
|
17
20
|
additions = ActionController::Base.log_process_action(payload)
|
18
21
|
|
22
|
+
runtimes = additions.inject({}) do |hash, string|
|
23
|
+
name, time = string.split(':')
|
24
|
+
hash[name] = time.to_f
|
25
|
+
hash
|
26
|
+
end
|
27
|
+
|
19
28
|
status = payload[:status]
|
20
29
|
if status.nil? && payload[:exception].present?
|
21
30
|
status = Rack::Utils.status_code(ActionDispatch::ShowExceptions.rescue_responses[payload[:exception].first]) rescue nil
|
22
31
|
end
|
23
32
|
|
24
|
-
Hoover.add(:status =>
|
25
|
-
:duration =>
|
26
|
-
Hoover.add :
|
33
|
+
Hoover.add(:status => status,
|
34
|
+
:duration => event.duration)
|
35
|
+
Hoover.add :runtimes => runtimes unless runtimes.blank?
|
27
36
|
end
|
28
37
|
|
29
38
|
def send_file(event)
|
30
|
-
Hoover.add(:sent_file
|
39
|
+
Hoover.add(:sent_file => { :path => event.payload[:path], :runtime => event.duration })
|
31
40
|
end
|
32
41
|
|
33
42
|
def redirect_to(event)
|
34
|
-
Hoover.add(:redirected_to
|
43
|
+
Hoover.add(:redirected_to => event.payload[:location])
|
35
44
|
end
|
36
45
|
|
37
46
|
def send_data(event)
|
38
|
-
Hoover.add(:sent_data
|
47
|
+
Hoover.add(:sent_data => { :filename => event.payload[:filename], :runtime => event.duration })
|
39
48
|
end
|
40
49
|
|
41
50
|
%w(write_fragment read_fragment exist_fragment?
|
@@ -43,8 +52,7 @@ module Hoover
|
|
43
52
|
class_eval <<-METHOD, __FILE__, __LINE__ + 1
|
44
53
|
def #{method}(event)
|
45
54
|
key_or_path = event.payload[:key] || event.payload[:path]
|
46
|
-
|
47
|
-
Hoover.add(method.to_sym, "\#{key_or_path} (%.1fms)" % event.duration)
|
55
|
+
Hoover.add(#{method.to_sym.inspect} => { :key => key_or_path, :runtime => event.duration })
|
48
56
|
end
|
49
57
|
METHOD
|
50
58
|
end
|
@@ -2,8 +2,8 @@ module Hoover
|
|
2
2
|
class ActionMailerLogSubscriber < ActiveSupport::LogSubscriber
|
3
3
|
def deliver(event)
|
4
4
|
recipients = Array.wrap(event.payload[:to])
|
5
|
-
Hoover.add(:sent_mail_to
|
6
|
-
Hoover.add(:sent_mail_duration
|
5
|
+
Hoover.add(:sent_mail_to => recipients)
|
6
|
+
Hoover.add(:sent_mail_duration => event.duration)
|
7
7
|
end
|
8
8
|
end
|
9
9
|
end
|
@@ -1,19 +1,5 @@
|
|
1
1
|
module Hoover
|
2
2
|
class ActionViewLogSubscriber < ActiveSupport::LogSubscriber
|
3
|
-
|
4
|
-
rendered = { :identifier => from_rails_root(event.payload[:identifier]),
|
5
|
-
:duration => event.duration }
|
6
|
-
rendered[:layout] = from_rails_root(event.payload[:layout]) if event.payload[:layout]
|
7
|
-
|
8
|
-
Hoover.add :rendered => rendered
|
9
|
-
end
|
10
|
-
alias :render_partial :render_template
|
11
|
-
alias :render_collection :render_template
|
12
|
-
|
13
|
-
protected
|
14
|
-
|
15
|
-
def from_rails_root(string)
|
16
|
-
string.sub("#{Rails.root}/", "").sub(/^app\/views\//, "")
|
17
|
-
end
|
3
|
+
# I have no need to log this to Loggly, implementations welcome.
|
18
4
|
end
|
19
5
|
end
|
@@ -4,7 +4,7 @@ module Hoover
|
|
4
4
|
result = event.payload[:result]
|
5
5
|
request = { :method => event.payload[:method].to_s.upcase,
|
6
6
|
:request_uri => event.payload[:request_uri],
|
7
|
-
:result_code => result.code,
|
7
|
+
:result_code => result.code.to_i,
|
8
8
|
:result_message => result.message,
|
9
9
|
:result_length => result.body.to_s.length,
|
10
10
|
:duration => event.duration }
|
data/lib/hoover/rack_logger.rb
CHANGED
data/lib/hoover/railtie.rb
CHANGED
@@ -1,10 +1,4 @@
|
|
1
1
|
module Hoover
|
2
|
-
autoload :ActionControllerLogSubscriber, 'hoover/log_subscribers/action_controller_log_subscriber'
|
3
|
-
autoload :ActionMailerLogSubscriber, 'hoover/log_subscribers/action_mailer_log_subscriber'
|
4
|
-
autoload :ActionViewLogSubscriber, 'hoover/log_subscribers/action_view_log_subscriber'
|
5
|
-
autoload :ActiveResourceLogSubscriber, 'hoover/log_subscribers/active_resource_log_subscriber'
|
6
|
-
autoload :ActiveRecordLogSubscriber, 'hoover/log_subscribers/active_record_log_subscriber'
|
7
|
-
|
8
2
|
class Railtie < Rails::Railtie
|
9
3
|
def self.all_rails_log_subscribers
|
10
4
|
[:action_controller, :action_mailer, :action_view, :active_resource, :active_record]
|
data/lib/hoover/version.rb
CHANGED
@@ -0,0 +1,177 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'rails'
|
3
|
+
|
4
|
+
describe Hoover::ActionControllerLogSubscriber do
|
5
|
+
before do
|
6
|
+
Hoover.init
|
7
|
+
@subscriber = Hoover::ActionControllerLogSubscriber.new
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "start_processing" do
|
11
|
+
before do
|
12
|
+
@subscriber.start_processing(start_processing_stub)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "sets controller" do
|
16
|
+
Hoover.hash[:controller].first.must_equal "AboutController"
|
17
|
+
end
|
18
|
+
|
19
|
+
it "sets action" do
|
20
|
+
Hoover.hash[:action].first.must_equal "index"
|
21
|
+
end
|
22
|
+
|
23
|
+
it "sets params" do
|
24
|
+
Hoover.hash[:params].first.must_equal "with_param" => "1"
|
25
|
+
end
|
26
|
+
|
27
|
+
it "sets format" do
|
28
|
+
Hoover.hash[:format].first.must_equal "HTML"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "process_action" do
|
33
|
+
before do
|
34
|
+
@subscriber.process_action(process_action_stub)
|
35
|
+
end
|
36
|
+
|
37
|
+
it "sets status" do
|
38
|
+
Hoover.hash[:status].first.must_equal 200
|
39
|
+
end
|
40
|
+
|
41
|
+
it "sets duration" do
|
42
|
+
Hoover.hash[:duration].first.must_equal 475.987
|
43
|
+
end
|
44
|
+
|
45
|
+
it "sets runtimes" do
|
46
|
+
Hoover.hash[:runtimes].first.must_equal "Views" => 138.4
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe "send_file" do
|
51
|
+
before do
|
52
|
+
@subscriber.send_file(send_file_stub)
|
53
|
+
end
|
54
|
+
|
55
|
+
it "sets sent_file" do
|
56
|
+
Hoover.hash[:sent_file].first.must_equal :path => '/apath', :runtime => 100.1
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe "redirect_to" do
|
61
|
+
before do
|
62
|
+
@subscriber.redirect_to(redirect_to_stub)
|
63
|
+
end
|
64
|
+
|
65
|
+
it "sets sent_file" do
|
66
|
+
Hoover.hash[:redirected_to].first.must_equal '/newlocation'
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe "send_data" do
|
71
|
+
before do
|
72
|
+
@subscriber.send_data(send_data_stub)
|
73
|
+
end
|
74
|
+
|
75
|
+
it "sets sent_data" do
|
76
|
+
Hoover.hash[:sent_data].first.must_equal :filename => 'somefile.txt', :runtime => 200.1
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
describe "write_fragment" do
|
81
|
+
before do
|
82
|
+
@subscriber.write_fragment(fragment_stub)
|
83
|
+
end
|
84
|
+
|
85
|
+
it "sets write_fragment" do
|
86
|
+
Hoover.hash[:write_fragment].first.must_equal :key => 'thefrag', :runtime => 123.1
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
describe "read_fragment" do
|
91
|
+
before do
|
92
|
+
@subscriber.read_fragment(fragment_stub)
|
93
|
+
end
|
94
|
+
|
95
|
+
it "sets read_fragment" do
|
96
|
+
Hoover.hash[:read_fragment].first.must_equal :key => 'thefrag', :runtime => 123.1
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
describe "exist_fragment" do
|
101
|
+
before do
|
102
|
+
@subscriber.exist_fragment?(fragment_stub)
|
103
|
+
end
|
104
|
+
|
105
|
+
it "sets exist_fragment" do
|
106
|
+
Hoover.hash[:exist_fragment?].first.must_equal :key => 'thefrag', :runtime => 123.1
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
describe "expire_fragment" do
|
111
|
+
before do
|
112
|
+
@subscriber.expire_fragment(fragment_stub)
|
113
|
+
end
|
114
|
+
|
115
|
+
it "sets expire_fragment" do
|
116
|
+
Hoover.hash[:expire_fragment].first.must_equal :key => 'thefrag', :runtime => 123.1
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
describe "expire_page" do
|
121
|
+
before do
|
122
|
+
@subscriber.expire_page(page_stub)
|
123
|
+
end
|
124
|
+
|
125
|
+
it "sets expire_page" do
|
126
|
+
Hoover.hash[:expire_page].first.must_equal :key => '/thepath', :runtime => 124.1
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
private
|
131
|
+
|
132
|
+
def start_processing_stub
|
133
|
+
payload = { :controller => "AboutController", :action => "index", :path => "/about?with_param=1",
|
134
|
+
:params => { "with_param" => "1", "action" => "index", "controller" => "about" },
|
135
|
+
:formats => [:html], :method=>"GET" }
|
136
|
+
duration = 0.005
|
137
|
+
stub(:payload => payload, :duration => duration)
|
138
|
+
end
|
139
|
+
|
140
|
+
def process_action_stub
|
141
|
+
payload = { :controller => "AboutController", :action => "index", :status => 200,
|
142
|
+
:params => { "with_param" => "1", "action" => "index", "controller" => "about" },
|
143
|
+
:path => "/about?with_param=1", :formats => [:html], :method => "GET",
|
144
|
+
:query_runtime => 0, :db_runtime => 4.542, :view_runtime => 138.39879927063 }
|
145
|
+
duration = 475.987
|
146
|
+
stub(:payload => payload, :duration => duration)
|
147
|
+
end
|
148
|
+
|
149
|
+
def send_file_stub
|
150
|
+
payload = { :path => '/apath' }
|
151
|
+
duration = 100.1
|
152
|
+
stub(:payload => payload, :duration => duration)
|
153
|
+
end
|
154
|
+
|
155
|
+
def redirect_to_stub
|
156
|
+
payload = { :location => '/newlocation' }
|
157
|
+
stub(:payload => payload)
|
158
|
+
end
|
159
|
+
|
160
|
+
def send_data_stub
|
161
|
+
payload = { :filename => 'somefile.txt' }
|
162
|
+
duration = 200.1
|
163
|
+
stub(:payload => payload, :duration => duration)
|
164
|
+
end
|
165
|
+
|
166
|
+
def fragment_stub
|
167
|
+
payload = { :key => 'thefrag' }
|
168
|
+
duration = 123.1
|
169
|
+
stub(:payload => payload, :duration => duration)
|
170
|
+
end
|
171
|
+
|
172
|
+
def page_stub
|
173
|
+
payload = { :path => '/thepath' }
|
174
|
+
duration = 124.1
|
175
|
+
stub(:payload => payload, :duration => duration)
|
176
|
+
end
|
177
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'rails'
|
3
|
+
|
4
|
+
describe Hoover::ActionMailerLogSubscriber do
|
5
|
+
before do
|
6
|
+
Hoover.init
|
7
|
+
@subscriber = Hoover::ActionMailerLogSubscriber.new
|
8
|
+
end
|
9
|
+
|
10
|
+
describe 'deliver' do
|
11
|
+
before do
|
12
|
+
@subscriber.deliver(deliver_stub)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "sets sent_mail_to" do
|
16
|
+
Hoover.hash[:sent_mail_to].first.must_equal ['email@example.com']
|
17
|
+
end
|
18
|
+
end
|
19
|
+
private
|
20
|
+
|
21
|
+
def deliver_stub
|
22
|
+
payload = { :to => 'email@example.com' }
|
23
|
+
duration = 1.1
|
24
|
+
stub(:payload => payload, :duration => duration)
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'rails'
|
3
|
+
|
4
|
+
describe Hoover::ActiveResourceLogSubscriber do
|
5
|
+
before do
|
6
|
+
Hoover.init
|
7
|
+
@subscriber = Hoover::ActiveResourceLogSubscriber.new
|
8
|
+
end
|
9
|
+
|
10
|
+
describe 'request' do
|
11
|
+
before do
|
12
|
+
@subscriber.request(request_stub)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "sets method" do
|
16
|
+
Hoover.hash[:active_resource_request].first[:method].must_equal 'GET'
|
17
|
+
end
|
18
|
+
|
19
|
+
it "sets request_uri" do
|
20
|
+
Hoover.hash[:active_resource_request].first[:request_uri].must_equal 'http://localhost/test.xml'
|
21
|
+
end
|
22
|
+
|
23
|
+
it "sets result_code" do
|
24
|
+
Hoover.hash[:active_resource_request].first[:result_code].must_equal 200
|
25
|
+
end
|
26
|
+
|
27
|
+
it "sets result_message" do
|
28
|
+
Hoover.hash[:active_resource_request].first[:result_message].must_equal 'OK'
|
29
|
+
end
|
30
|
+
|
31
|
+
it "sets result_length" do
|
32
|
+
Hoover.hash[:active_resource_request].first[:result_length].must_equal 4
|
33
|
+
end
|
34
|
+
|
35
|
+
it "sets duration" do
|
36
|
+
Hoover.hash[:active_resource_request].first[:duration].must_equal 21.12
|
37
|
+
end
|
38
|
+
end
|
39
|
+
private
|
40
|
+
|
41
|
+
def request_stub
|
42
|
+
result = stub(:code => '200', :message => 'OK', :body => 'body')
|
43
|
+
payload = { :method => :get, :result => result, :request_uri => "http://localhost/test.xml" }
|
44
|
+
duration = 21.12
|
45
|
+
stub(:payload => payload, :duration => duration)
|
46
|
+
end
|
47
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hoover
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,22 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-10-
|
12
|
+
date: 2011-10-26 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: logglier
|
16
|
-
requirement: &
|
16
|
+
requirement: &70138783509820 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.2.
|
21
|
+
version: 0.2.5
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70138783509820
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bundler
|
27
|
-
requirement: &
|
27
|
+
requirement: &70138783509400 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70138783509400
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
requirement: &
|
38
|
+
requirement: &70138783508940 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70138783508940
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: minitest
|
49
|
-
requirement: &
|
49
|
+
requirement: &70138783508520 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70138783508520
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: mocha
|
60
|
-
requirement: &
|
60
|
+
requirement: &70138770853240 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,7 +65,18 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70138770853240
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rails
|
71
|
+
requirement: &70138770852720 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ~>
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 3.1.0
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70138770852720
|
69
80
|
description: Sets up a hash at the beginning of each request and flushes it to Loggly
|
70
81
|
at the end of the request. Also comes with standard Rails 3 log subscribers.
|
71
82
|
email:
|
@@ -93,6 +104,9 @@ files:
|
|
93
104
|
- lib/hoover/rack_logger.rb
|
94
105
|
- lib/hoover/railtie.rb
|
95
106
|
- lib/hoover/version.rb
|
107
|
+
- spec/action_controller_log_subscrier_spec.rb
|
108
|
+
- spec/action_mailer_log_subscriber_spec.rb
|
109
|
+
- spec/active_resource_log_subscriber_spec.rb
|
96
110
|
- spec/helper.rb
|
97
111
|
- spec/hoover_spec.rb
|
98
112
|
- spec/job_spec.rb
|
@@ -123,6 +137,9 @@ specification_version: 3
|
|
123
137
|
summary: Rack-based support for collecting a single hash per request to be sent to
|
124
138
|
Loggly
|
125
139
|
test_files:
|
140
|
+
- spec/action_controller_log_subscrier_spec.rb
|
141
|
+
- spec/action_mailer_log_subscriber_spec.rb
|
142
|
+
- spec/active_resource_log_subscriber_spec.rb
|
126
143
|
- spec/helper.rb
|
127
144
|
- spec/hoover_spec.rb
|
128
145
|
- spec/job_spec.rb
|