kage 0.9.1 → 0.9.2
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.
- checksums.yaml +7 -0
- data/CHANGES.md +4 -0
- data/README.md +2 -0
- data/lib/kage/connection.rb +2 -2
- data/lib/kage/version.rb +1 -1
- metadata +29 -22
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 06e21e78d7693e7a36f00e553f389bd2bd0c9652
|
4
|
+
data.tar.gz: 09dd5da80e3afa98e851ca9639db3cc2c6a0f92c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c5b2d107056298ec1ca8299b5976759cec55842f5e46973b6147b05818663a6338b49039018cefbb0102a710765bc00b6881f2948db290f1a5f83ddb979d0f89
|
7
|
+
data.tar.gz: ed7609e900bcb0010ab60ff8964760194f17beb1fdbb982c206b2755c932d55bd28139ff148357332491f4ebedd452bb8787631b50df952da7c22a51ec28d2cf
|
data/CHANGES.md
CHANGED
data/README.md
CHANGED
@@ -4,6 +4,8 @@ Kage (kah-geh) is an HTTP shadow proxy server that sits between clients and your
|
|
4
4
|
|
5
5
|
Kage can be used to duplex requests to the master (production) server and shadow servers that have newer code changes that are going to be deployed. By shadowing requests to the new code you can make sure there are no big/surprising changes in the response in terms of data, performance and database loads etc.
|
6
6
|
|
7
|
+
Kage is built with EventMachine and em-proxy and all shadow requests are done asynchronously, while responses from master are sent back to the client without blocking the network, so clients will never notice any delays even when shadow traffic is made.
|
8
|
+
|
7
9
|
You can customize the behavior of Kage with simple callbacks, when it chooses which backends to send shadow requests to (or not at all), appends or deletes HTTP headers per backend, and examines the complete HTTP response (including headers and body).
|
8
10
|
|
9
11
|
## Features
|
data/lib/kage/connection.rb
CHANGED
@@ -68,7 +68,7 @@ module Kage
|
|
68
68
|
self.comm_inactivity_timeout = server.client_timeout
|
69
69
|
self.master_backend = server.master
|
70
70
|
|
71
|
-
@session_id = "%016x" %
|
71
|
+
@session_id = "%016x" % rand(2**64)
|
72
72
|
info "New connection"
|
73
73
|
|
74
74
|
@callbacks = server.callbacks
|
@@ -88,7 +88,7 @@ module Kage
|
|
88
88
|
@parser.on_headers_complete = proc do |headers|
|
89
89
|
@request = {
|
90
90
|
:method => @parser.http_method,
|
91
|
-
:path => @parser.
|
91
|
+
:path => URI.parse(@parser.request_url).path,
|
92
92
|
:url => @parser.request_url,
|
93
93
|
:headers => headers
|
94
94
|
}
|
data/lib/kage/version.rb
CHANGED
metadata
CHANGED
@@ -1,49 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
5
|
-
prerelease:
|
4
|
+
version: 0.9.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Tatsuhiko Miyagawa
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-08-27 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: em-proxy
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 0.1.7
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.1.7
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
28
|
name: http_parser.rb
|
27
|
-
requirement:
|
28
|
-
none: false
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
|
-
- -
|
31
|
+
- - ">="
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: 0.5.3
|
33
34
|
type: :runtime
|
34
35
|
prerelease: false
|
35
|
-
version_requirements:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.5.3
|
36
41
|
- !ruby/object:Gem::Dependency
|
37
42
|
name: rspec
|
38
|
-
requirement:
|
39
|
-
none: false
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
40
44
|
requirements:
|
41
|
-
- -
|
45
|
+
- - ">="
|
42
46
|
- !ruby/object:Gem::Version
|
43
47
|
version: '0'
|
44
48
|
type: :development
|
45
49
|
prerelease: false
|
46
|
-
version_requirements:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
47
55
|
description: em-proxy based shadow proxy server
|
48
56
|
email:
|
49
57
|
- miyagawa@bulknews.net
|
@@ -51,7 +59,7 @@ executables: []
|
|
51
59
|
extensions: []
|
52
60
|
extra_rdoc_files: []
|
53
61
|
files:
|
54
|
-
- .gitignore
|
62
|
+
- ".gitignore"
|
55
63
|
- CHANGES.md
|
56
64
|
- Gemfile
|
57
65
|
- LICENSE
|
@@ -65,27 +73,26 @@ files:
|
|
65
73
|
- lib/kage/version.rb
|
66
74
|
homepage: https://github.com/cookpad/kage
|
67
75
|
licenses: []
|
76
|
+
metadata: {}
|
68
77
|
post_install_message:
|
69
78
|
rdoc_options: []
|
70
79
|
require_paths:
|
71
80
|
- lib
|
72
81
|
required_ruby_version: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
82
|
requirements:
|
75
|
-
- -
|
83
|
+
- - ">="
|
76
84
|
- !ruby/object:Gem::Version
|
77
85
|
version: '0'
|
78
86
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
79
|
-
none: false
|
80
87
|
requirements:
|
81
|
-
- -
|
88
|
+
- - ">="
|
82
89
|
- !ruby/object:Gem::Version
|
83
90
|
version: '0'
|
84
91
|
requirements: []
|
85
92
|
rubyforge_project:
|
86
|
-
rubygems_version:
|
93
|
+
rubygems_version: 2.2.2
|
87
94
|
signing_key:
|
88
|
-
specification_version:
|
95
|
+
specification_version: 4
|
89
96
|
summary: Kage (kah-geh) is an HTTP shadow proxy server that sits between your production
|
90
97
|
servers to send shaddow traffic to the servers with new code changes.
|
91
98
|
test_files: []
|