after_response 0.8
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/CHANGELOG +0 -0
- data/README +6 -0
- data/after_response.gemspec +23 -0
- data/lib/after_response.rb +36 -0
- data/rails/init.rb +5 -0
- metadata +76 -0
data/CHANGELOG
ADDED
File without changes
|
data/README
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = "after_response"
|
3
|
+
s.version = "0.8"
|
4
|
+
s.platform = Gem::Platform::RUBY
|
5
|
+
s.summary = "Provides hooks to execute callbacks after the response has been delivered to the client."
|
6
|
+
|
7
|
+
s.description = <<-EOF
|
8
|
+
AfterResponse provides callbacks into the Passenger2 and Passenger3 (and soon, Unicorn)
|
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.
|
12
|
+
EOF
|
13
|
+
|
14
|
+
s.files = Dir['{lib/*,rails/*}'] +
|
15
|
+
%w(after_response.gemspec CHANGELOG README)
|
16
|
+
s.require_path = 'lib'
|
17
|
+
s.extra_rdoc_files = ['README', 'CHANGELOG']
|
18
|
+
|
19
|
+
s.author = 'Kevin E. Hunt'
|
20
|
+
s.email = 'kevin@kev.in'
|
21
|
+
s.homepage = 'https://github.com/kevn/after_response'
|
22
|
+
|
23
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
|
2
|
+
module AfterResponse
|
3
|
+
|
4
|
+
CONTAINER_ADAPTERS = [
|
5
|
+
OpenStruct.new(
|
6
|
+
:name => :passenger3,
|
7
|
+
:test => lambda{ defined?(PhusionPassenger) && PhusionPassenger::AbstractRequestHandler.private_instance_methods.include?("accept_and_process_next_request") },
|
8
|
+
:lib => 'after_response/adapters/passenger3'
|
9
|
+
),
|
10
|
+
OpenStruct.new(
|
11
|
+
:name => :passenger2,
|
12
|
+
:test => lambda{ defined?(PhusionPassenger) && PhusionPassenger::VERSION_STRING == '2.2.14' },
|
13
|
+
:lib => 'after_response/adapters/passenger2'
|
14
|
+
)
|
15
|
+
]
|
16
|
+
|
17
|
+
def self.attach_to_current_container!
|
18
|
+
return if @after_response_attached
|
19
|
+
if current_container
|
20
|
+
require(current_container.lib)
|
21
|
+
@after_response_attached = true
|
22
|
+
Rails.logger.info{ "[AfterResponse] => Callback hook installed for #{current_container.name}" }
|
23
|
+
else
|
24
|
+
Rails.logger.info{ "[AfterResponse] => No supported container found. AfterResponse will not buffer." }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.current_container
|
29
|
+
@current_container ||= CONTAINER_ADAPTERS.detect{|c| c.test.call }
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.bufferable?
|
33
|
+
@current_container
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
data/rails/init.rb
ADDED
metadata
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: after_response
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 27
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 8
|
9
|
+
version: "0.8"
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Kevin E. Hunt
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-12-13 00:00:00 -08:00
|
18
|
+
default_executable:
|
19
|
+
dependencies: []
|
20
|
+
|
21
|
+
description: |
|
22
|
+
AfterResponse provides callbacks into the Passenger2 and Passenger3 (and soon, Unicorn)
|
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.
|
26
|
+
|
27
|
+
email: kevin@kev.in
|
28
|
+
executables: []
|
29
|
+
|
30
|
+
extensions: []
|
31
|
+
|
32
|
+
extra_rdoc_files:
|
33
|
+
- README
|
34
|
+
- CHANGELOG
|
35
|
+
files:
|
36
|
+
- lib/after_response.rb
|
37
|
+
- rails/init.rb
|
38
|
+
- after_response.gemspec
|
39
|
+
- CHANGELOG
|
40
|
+
- README
|
41
|
+
has_rdoc: true
|
42
|
+
homepage: https://github.com/kevn/after_response
|
43
|
+
licenses: []
|
44
|
+
|
45
|
+
post_install_message:
|
46
|
+
rdoc_options: []
|
47
|
+
|
48
|
+
require_paths:
|
49
|
+
- lib
|
50
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
hash: 3
|
56
|
+
segments:
|
57
|
+
- 0
|
58
|
+
version: "0"
|
59
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
60
|
+
none: false
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
hash: 3
|
65
|
+
segments:
|
66
|
+
- 0
|
67
|
+
version: "0"
|
68
|
+
requirements: []
|
69
|
+
|
70
|
+
rubyforge_project:
|
71
|
+
rubygems_version: 1.3.7
|
72
|
+
signing_key:
|
73
|
+
specification_version: 3
|
74
|
+
summary: Provides hooks to execute callbacks after the response has been delivered to the client.
|
75
|
+
test_files: []
|
76
|
+
|