after_response 0.8 → 0.9

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.
@@ -1,14 +1,14 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "after_response"
3
- s.version = "0.8"
3
+ s.version = "0.9"
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.summary = "Provides hooks to execute callbacks after the response has been delivered to the client."
6
6
 
7
7
  s.description = <<-EOF
8
- AfterResponse provides callbacks into the Passenger2 and Passenger3 (and soon, Unicorn)
8
+ AfterResponse provides callbacks into the Passenger2.2, Passenger3 and Unicorn
9
9
  request cycle. The main goal is to delay as much non-critical processing until later, delivering
10
- the response to the client application sooner. This would mainly include logging data into a Mixpanel-like
11
- service, sending email and other tasks that do not affect the response body in any way.
10
+ the response to the client application sooner. This would mainly include logging data into a Observatory-like
11
+ event logging service, sending email and other tasks that do not affect the response body in any way.
12
12
  EOF
13
13
 
14
14
  s.files = Dir['{lib/*,rails/*}'] +
@@ -21,3 +21,4 @@ EOF
21
21
  s.homepage = 'https://github.com/kevn/after_response'
22
22
 
23
23
  end
24
+
@@ -1,3 +1,5 @@
1
+ require 'ostruct'
2
+ require 'after_response/callbacks'
1
3
 
2
4
  module AfterResponse
3
5
 
@@ -9,28 +11,59 @@ module AfterResponse
9
11
  ),
10
12
  OpenStruct.new(
11
13
  :name => :passenger2,
12
- :test => lambda{ defined?(PhusionPassenger) && PhusionPassenger::VERSION_STRING == '2.2.14' },
13
- :lib => 'after_response/adapters/passenger2'
14
- )
14
+ # This has only been tested on 2.2.14 and 2.2.15. Other 2.2.x might work if the main_loop method is unchanged.
15
+ :test => lambda{ defined?(PhusionPassenger) && ['2.2.14', '2.2.15'].include?(PhusionPassenger::VERSION_STRING) },
16
+ :lib => 'after_response/adapters/passenger2_2'
17
+ ),
18
+ OpenStruct.new(
19
+ :name => :unicorn_middleware,
20
+ :test => lambda{ defined?(Unicorn) },
21
+ :lib => 'after_response/adapters/unicorn_middleware'
22
+ ),
23
+ # FIXME: Find a better way to inspect the installed Rack middleware for the above and fallback
24
+ # to monkeypatch if middleware isn't installed.
25
+ # OpenStruct.new(
26
+ # :name => :unicorn_monkeypatch,
27
+ # :test => lambda{ defined?(Unicorn) },
28
+ # :lib => 'after_response/adapters/unicorn_monkeypatch'
29
+ # )
15
30
  ]
16
31
 
17
32
  def self.attach_to_current_container!
18
33
  return if @after_response_attached
19
34
  if current_container
20
- require(current_container.lib)
35
+ require(current_container.lib) if current_container.lib
21
36
  @after_response_attached = true
22
- Rails.logger.info{ "[AfterResponse] => Callback hook installed for #{current_container.name}" }
37
+ logger.info{ "[AfterResponse] => Callback hook installed for #{current_container.name}" }
23
38
  else
24
- Rails.logger.info{ "[AfterResponse] => No supported container found. AfterResponse will not buffer." }
39
+ logger.info{ "[AfterResponse] => No supported container found. AfterResponse will not buffer." }
25
40
  end
26
41
  end
27
42
 
43
+ def self.reset!
44
+ @after_response_attached = @current_container = @logger = nil
45
+ end
46
+
28
47
  def self.current_container
29
48
  @current_container ||= CONTAINER_ADAPTERS.detect{|c| c.test.call }
30
49
  end
31
50
 
51
+ # AfterResponse is in a bufferable state mode only if it is running under a supported container
52
+ # where an after_response callback hook was installed and if an after_response callback
53
+ # was installed that calls Starboard::EventQueue.flush!
32
54
  def self.bufferable?
33
- @current_container
55
+ current_container
56
+ end
57
+
58
+ def self.logger
59
+ @logger ||= begin
60
+ if defined?(Rails)
61
+ Rails.logger
62
+ else
63
+ require 'logger'
64
+ Logger.new($stdout)
65
+ end
66
+ end
34
67
  end
35
68
 
36
69
  end
data/rails/init.rb CHANGED
@@ -1,5 +1,3 @@
1
1
  require 'after_response'
2
2
 
3
3
  AfterResponse.attach_to_current_container!
4
-
5
- ActionController::Base.send(:include, AfterResponse::Callbacks::Helpers)
metadata CHANGED
@@ -1,12 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: after_response
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 8
9
- version: "0.8"
8
+ - 9
9
+ version: "0.9"
10
10
  platform: ruby
11
11
  authors:
12
12
  - Kevin E. Hunt
@@ -14,15 +14,15 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-12-13 00:00:00 -08:00
17
+ date: 2010-12-15 00:00:00 -08:00
18
18
  default_executable:
19
19
  dependencies: []
20
20
 
21
21
  description: |
22
- AfterResponse provides callbacks into the Passenger2 and Passenger3 (and soon, Unicorn)
22
+ AfterResponse provides callbacks into the Passenger2.2, Passenger3 and Unicorn
23
23
  request cycle. The main goal is to delay as much non-critical processing until later, delivering
24
- the response to the client application sooner. This would mainly include logging data into a Mixpanel-like
25
- service, sending email and other tasks that do not affect the response body in any way.
24
+ the response to the client application sooner. This would mainly include logging data into a Observatory-like
25
+ event logging service, sending email and other tasks that do not affect the response body in any way.
26
26
 
27
27
  email: kevin@kev.in
28
28
  executables: []