ajp-rails 0.0.2 → 0.0.3
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/NEWS.en +5 -2
- data/NEWS.ja +4 -1
- data/ajp-rails.gemspec +1 -1
- data/lib/ajp-rails/ajp_rails_dispatcher.rb +14 -1
- data/lib/ajp-rails/rails-runner.rb +16 -0
- data/lib/ajp-rails/rails-wrapper.rb +14 -0
- metadata +2 -2
data/NEWS.en
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
= NEWS
|
2
|
+
== 0.0.3 (2006-01-25)
|
3
|
+
* The `0.3th' release.
|
4
|
+
* Sticky session support.
|
2
5
|
== 0.0.2 (2006-01-24)
|
3
6
|
Status: unstable
|
4
7
|
* The `0th' release to be reviewed by "2nd Rails Meeting @ Tokyo".
|
5
|
-
* The first release will be done
|
6
|
-
will be include the result of the review.
|
8
|
+
* The first release -- v.0.1.0 -- will be done by the end of Jan, 2006.
|
9
|
+
This will be include the result of the review.
|
data/NEWS.ja
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
= NEWS
|
2
|
+
== 0.0.3 (2006-01-25)
|
3
|
+
* ����äȽ���`��0.3��'����
|
4
|
+
* Sticky session�ݡ���
|
2
5
|
== 0.0.2 (2006-01-24)
|
3
6
|
����: ����
|
4
7
|
* Rails�ٶ���@����ǥ�ӥ塼���Ƥ�餦����ˡ�`������'������
|
5
|
-
*
|
8
|
+
* ������(0.1.0)��2006ǯ1��ǽ����Τ����ˤ���ͽ�ꡣ��ӥ塼���Ƥ��ä�
|
6
9
|
��̤�ȿ�Ǥ�����������
|
data/ajp-rails.gemspec
CHANGED
@@ -14,7 +14,20 @@ class AjpRailsDispatcher < Dispatcher
|
|
14
14
|
request = AjpRailsRequest.new(ajp_req, session_options, server_environments)
|
15
15
|
response = AjpRailsResponse.new
|
16
16
|
prepare_application
|
17
|
-
ActionController::Routing::Routes.recognize!(request).process(request, response)
|
17
|
+
ActionController::Routing::Routes.recognize!(request).process(request, response)
|
18
|
+
ajp_req.output_cookies.each do |cookie|
|
19
|
+
if cookie.name == 'JSESSIONID'
|
20
|
+
case cookie.value
|
21
|
+
when String
|
22
|
+
cookie.value << '.' << server_environments['LOAD_BALANCE_ID']
|
23
|
+
when Array
|
24
|
+
cookie.value.each do |item|
|
25
|
+
item << '.' << server_environments['LOAD_BALANCE_ID']
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
response.to_ajp_response(ajp_req.output_cookies)
|
18
31
|
rescue Object => exception
|
19
32
|
puts exception.message + ":" + exception.backtrace.join("\n")
|
20
33
|
failsafe_response(500) do
|
@@ -50,6 +50,8 @@ OPTION_NAMES_TO_INTERNAL_NAMES = {
|
|
50
50
|
'directory' => 'APP_DIRECTORY',
|
51
51
|
'prefix' => 'DISPATCHER_PREFIX',
|
52
52
|
'suffix' => 'DISPATCHER_SUFFIX',
|
53
|
+
'jvm-route' => 'LOAD_BALANCE_ID',
|
54
|
+
'serverid' => 'LOAD_BALANCE_ID',
|
53
55
|
'daemon' => 'IS_DAEMON'
|
54
56
|
}
|
55
57
|
|
@@ -105,6 +107,20 @@ def parse_options
|
|
105
107
|
"The suffix of the ajp-mounted URLs.") { |v|
|
106
108
|
cmd_opts[OPTION_NAMES_TO_INTERNAL_NAMES['suffix']] = v
|
107
109
|
}
|
110
|
+
parser.on('--serverid=ID',
|
111
|
+
"The unique ID to identify this rails process," +
|
112
|
+
" which is for sticky session. The ID can contain only" +
|
113
|
+
" [a-z][A-Z][0-9], and case insensitive.") { |id|
|
114
|
+
raise ArgumentError, 'Server ID can contain only [a-z][A-Z][0-9].' unless
|
115
|
+
/\A[[:alnum:]]+\Z/ =~ id
|
116
|
+
cmd_opts[OPTION_NAMES_TO_INTERNAL_NAMES['serverid']] = id
|
117
|
+
}
|
118
|
+
parser.on('--jvm-route=ID',
|
119
|
+
"This is equal to --serverid") { |id|
|
120
|
+
raise ArgumentError, 'Server ID can contain only [a-z][A-Z][0-9].' unless
|
121
|
+
/\A[[:alnum:]]+\Z/ =~ id
|
122
|
+
cmd_opts[OPTION_NAMES_TO_INTERNAL_NAMES['jvm-route']] = id
|
123
|
+
}
|
108
124
|
parser.on('--daemon', "Makes Rails run as a daemon") {|v|
|
109
125
|
cmd_opts[OPTION_NAMES_TO_INTERNAL_NAMES['daemon']] = v
|
110
126
|
}
|
@@ -80,6 +80,20 @@ class AjpRailsRequest < ActionController::AbstractRequest
|
|
80
80
|
@server_environments = server_environments
|
81
81
|
@session_options['session_path'] ||= @server_environments['APP_LOCATION']
|
82
82
|
|
83
|
+
if server_environments['LOAD_BALANCE_ID'] and @req.cookies['JSESSIONID']
|
84
|
+
balance_id = server_environments['LOAD_BALANCE_ID']
|
85
|
+
@req.cookies['JSESSIONID'].each do |value|
|
86
|
+
case value
|
87
|
+
when String
|
88
|
+
value.gsub!(/\.#{Regexp.escape(balance_id)}\Z/, '')
|
89
|
+
when Array
|
90
|
+
value.each do |entry|
|
91
|
+
entry.gsub!(/\.#{Regexp.escape(balance_id)}\Z/, '')
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
83
97
|
# simulates environment hash.
|
84
98
|
@env = self.class.instance_method(:environment).bind(self)
|
85
99
|
# Object#method is overridden by AbstractRequest#method
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
|
|
3
3
|
specification_version: 1
|
4
4
|
name: ajp-rails
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.0.
|
7
|
-
date: 2006-01-
|
6
|
+
version: 0.0.3
|
7
|
+
date: 2006-01-25 00:00:00 +09:00
|
8
8
|
summary: Ruby on Rails Runner, which uses AJP(Apache JServ Protocol) to cooperate with a HTTPd, instead of CGI or FastCGI
|
9
9
|
require_paths:
|
10
10
|
- lib
|