kage 0.9.1 → 0.9.2
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|