thin 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of thin might be problematic. Click here for more details.
- data/COPYING +18 -0
- data/README +32 -45
- data/Rakefile +66 -23
- data/bin/thin +76 -45
- data/doc/benchmarks.txt +64 -249
- data/doc/rdoc/created.rid +1 -1
- data/doc/rdoc/files/README.html +37 -100
- data/doc/rdoc/rdoc-style.css +5 -0
- data/example/config.ru +9 -0
- data/ext/thin_parser/common.rl +54 -0
- data/ext/thin_parser/ext_help.h +14 -0
- data/ext/thin_parser/extconf.rb +6 -0
- data/ext/thin_parser/parser.c +1199 -0
- data/ext/thin_parser/parser.h +49 -0
- data/ext/thin_parser/parser.rl +143 -0
- data/ext/thin_parser/thin.c +424 -0
- data/lib/rack/adapter/rails.rb +136 -0
- data/lib/rack/handler/thin.rb +13 -0
- data/lib/thin.rb +28 -12
- data/lib/thin/connection.rb +47 -0
- data/lib/thin/daemonizing.rb +5 -1
- data/lib/thin/headers.rb +3 -2
- data/lib/thin/logging.rb +6 -13
- data/lib/thin/request.rb +53 -133
- data/lib/thin/response.rb +21 -25
- data/lib/thin/server.rb +30 -94
- data/lib/thin/version.rb +2 -2
- data/lib/thin_parser.bundle +0 -0
- data/spec/daemonizing_spec.rb +94 -0
- data/spec/headers_spec.rb +35 -0
- data/spec/request_spec.rb +258 -0
- data/spec/response_spec.rb +40 -0
- data/spec/server_spec.rb +75 -0
- data/spec/spec_helper.rb +126 -0
- metadata +79 -99
- data/bin/thin_cluster +0 -53
- data/doc/rdoc/classes/Kernel.html +0 -182
- data/doc/rdoc/classes/Process.html +0 -175
- data/doc/rdoc/classes/Thin.html +0 -184
- data/doc/rdoc/classes/Thin/CGIWrapper.html +0 -438
- data/doc/rdoc/classes/Thin/Cluster.html +0 -392
- data/doc/rdoc/classes/Thin/Command.html +0 -221
- data/doc/rdoc/classes/Thin/CommandError.html +0 -154
- data/doc/rdoc/classes/Thin/Commands.html +0 -145
- data/doc/rdoc/classes/Thin/Daemonizable.html +0 -250
- data/doc/rdoc/classes/Thin/Daemonizable/ClassMethods.html +0 -203
- data/doc/rdoc/classes/Thin/DirHandler.html +0 -250
- data/doc/rdoc/classes/Thin/Handler.html +0 -195
- data/doc/rdoc/classes/Thin/Headers.html +0 -244
- data/doc/rdoc/classes/Thin/InvalidRequest.html +0 -150
- data/doc/rdoc/classes/Thin/Logging.html +0 -214
- data/doc/rdoc/classes/Thin/RailsHandler.html +0 -234
- data/doc/rdoc/classes/Thin/RailsServer.html +0 -175
- data/doc/rdoc/classes/Thin/Request.html +0 -379
- data/doc/rdoc/classes/Thin/Response.html +0 -311
- data/doc/rdoc/classes/Thin/Server.html +0 -381
- data/doc/rdoc/files/bin/thin.html +0 -188
- data/doc/rdoc/files/bin/thin_cluster.html +0 -175
- data/doc/rdoc/files/lib/thin/cgi_rb.html +0 -263
- data/doc/rdoc/files/lib/thin/cluster_rb.html +0 -263
- data/doc/rdoc/files/lib/thin/command_rb.html +0 -263
- data/doc/rdoc/files/lib/thin/consts_rb.html +0 -263
- data/doc/rdoc/files/lib/thin/daemonizing_rb.html +0 -263
- data/doc/rdoc/files/lib/thin/handler_rb.html +0 -263
- data/doc/rdoc/files/lib/thin/headers_rb.html +0 -263
- data/doc/rdoc/files/lib/thin/logging_rb.html +0 -263
- data/doc/rdoc/files/lib/thin/mime_types_rb.html +0 -263
- data/doc/rdoc/files/lib/thin/rails_rb.html +0 -263
- data/doc/rdoc/files/lib/thin/recipes_rb.html +0 -171
- data/doc/rdoc/files/lib/thin/request_rb.html +0 -171
- data/doc/rdoc/files/lib/thin/response_rb.html +0 -171
- data/doc/rdoc/files/lib/thin/server_rb.html +0 -171
- data/doc/rdoc/files/lib/thin/statuses_rb.html +0 -171
- data/doc/rdoc/files/lib/thin/version_rb.html +0 -171
- data/lib/thin/cgi.rb +0 -159
- data/lib/thin/cluster.rb +0 -147
- data/lib/thin/command.rb +0 -49
- data/lib/thin/commands/cluster/base.rb +0 -24
- data/lib/thin/commands/cluster/config.rb +0 -36
- data/lib/thin/commands/cluster/restart.rb +0 -35
- data/lib/thin/commands/cluster/start.rb +0 -40
- data/lib/thin/commands/cluster/stop.rb +0 -28
- data/lib/thin/commands/server/base.rb +0 -7
- data/lib/thin/commands/server/start.rb +0 -33
- data/lib/thin/commands/server/stop.rb +0 -29
- data/lib/thin/consts.rb +0 -37
- data/lib/thin/handler.rb +0 -57
- data/lib/thin/mime_types.rb +0 -619
- data/lib/thin/rails.rb +0 -44
- data/lib/thin/recipes.rb +0 -36
- data/lib/transat/parser.rb +0 -247
data/bin/thin_cluster
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# == this_cluster
|
3
|
-
# Script used to launch multiple server instances.
|
4
|
-
# It takes most of the same argument as the +thin+ script
|
5
|
-
# plus the -n option to specify the number of servers to run.
|
6
|
-
#
|
7
|
-
# Also, you can store your options into a config file, create it like this:
|
8
|
-
# thin_cluster config -C /var/www/my_app/current config
|
9
|
-
# Then a config file will be created in /var/www/my_app/current/config/thin.yml
|
10
|
-
# with the default options.
|
11
|
-
# You can launch your 3 servers with:
|
12
|
-
# thin_cluster start
|
13
|
-
# And stop them with:
|
14
|
-
# thin_cluster stop
|
15
|
-
#
|
16
|
-
# Run <tt>thin_cluster help</tt> to get help.
|
17
|
-
|
18
|
-
require File.dirname(__FILE__) + '/../lib/thin'
|
19
|
-
require 'thin/command'
|
20
|
-
|
21
|
-
Thin.define_commands do
|
22
|
-
program_name 'thin_cluster'
|
23
|
-
version Thin::VERSION::STRING
|
24
|
-
help 'Thin cluster monitoring tool for managing multiple Thin web servers'
|
25
|
-
|
26
|
-
option :address, :short => :a, :default => '127.0.0.1', :message => 'Address to bind to',
|
27
|
-
:param_name => 'ADDRESS'
|
28
|
-
option :port, :short => :p, :default => 5000, :message => 'Port number to bind to',
|
29
|
-
:param_name => 'PORT', :type => :int
|
30
|
-
option :servers, :short => :n, :default => 3, :message => 'Number of servers to launch',
|
31
|
-
:param_name => 'NUM', :type => :int
|
32
|
-
option :environment, :short => :e, :default => 'production', :message => 'Rails environment',
|
33
|
-
:param_name => 'ENVIRONMENT'
|
34
|
-
option :log_file, :short => :l, :default => 'log/thin.log', :message => 'File to write log output to',
|
35
|
-
:param_name => 'PATH'
|
36
|
-
option :pid_file, :short => :P, :default => 'tmp/pids/thin.pid', :message => 'File to write the PID (use with -d)',
|
37
|
-
:param_name => 'PATH'
|
38
|
-
option :cwd, :short => :c, :param_name => 'PATH', :message => 'Change to dir before starting'
|
39
|
-
option :user, :short => :u, :param_name => 'USER', :message => 'User to run the process as'
|
40
|
-
option :group, :short => :g, :param_name => 'GROUP', :message => 'Group to run the process as'
|
41
|
-
option :config, :short => :C, :default => 'config/thin.yml', :message => 'Config file',
|
42
|
-
:param_name => 'PATH'
|
43
|
-
option :timeout, :short => :T, :param_name => 'SEC', :message => 'Server and command timeout',
|
44
|
-
:default => 60
|
45
|
-
option :trace, :short => :t, :message => 'Turn trace on'
|
46
|
-
|
47
|
-
valid_options = [:address, :port, :environment, :log_file, :pid_file, :cwd, :servers, :config, :user, :group, :trace]
|
48
|
-
|
49
|
-
command :start, Thin::Commands::Cluster::Start, :valid_options => valid_options
|
50
|
-
command :stop, Thin::Commands::Cluster::Stop, :valid_options => valid_options
|
51
|
-
command :restart, Thin::Commands::Cluster::Restart, :valid_options => valid_options
|
52
|
-
command :config, Thin::Commands::Cluster::Config, :valid_options => valid_options
|
53
|
-
end
|
@@ -1,182 +0,0 @@
|
|
1
|
-
|
2
|
-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
3
|
-
<html>
|
4
|
-
<head>
|
5
|
-
<title>
|
6
|
-
thin » Module: Kernel
|
7
|
-
</title>
|
8
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
9
|
-
<link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
|
10
|
-
<script language="JavaScript" type="text/javascript">
|
11
|
-
// <![CDATA[
|
12
|
-
|
13
|
-
function toggleSource( id )
|
14
|
-
{
|
15
|
-
var elem
|
16
|
-
var link
|
17
|
-
|
18
|
-
if( document.getElementById )
|
19
|
-
{
|
20
|
-
elem = document.getElementById( id )
|
21
|
-
link = document.getElementById( "l_" + id )
|
22
|
-
}
|
23
|
-
else if ( document.all )
|
24
|
-
{
|
25
|
-
elem = eval( "document.all." + id )
|
26
|
-
link = eval( "document.all.l_" + id )
|
27
|
-
}
|
28
|
-
else
|
29
|
-
return false;
|
30
|
-
|
31
|
-
if( elem.style.display == "block" )
|
32
|
-
{
|
33
|
-
elem.style.display = "none"
|
34
|
-
link.innerHTML = "show source"
|
35
|
-
}
|
36
|
-
else
|
37
|
-
{
|
38
|
-
elem.style.display = "block"
|
39
|
-
link.innerHTML = "hide source"
|
40
|
-
}
|
41
|
-
}
|
42
|
-
|
43
|
-
function openCode( url )
|
44
|
-
{
|
45
|
-
window.open( url, "SOURCE_CODE", "width=400,height=400,scrollbars=yes" )
|
46
|
-
}
|
47
|
-
// ]]>
|
48
|
-
</script>
|
49
|
-
</head>
|
50
|
-
<body>
|
51
|
-
<ul id="menu">
|
52
|
-
<li><a href="/thin/">home</a></li>
|
53
|
-
<li><a href="/thin/doc/">doc</a></li>
|
54
|
-
<li><a href="/thin/trac.fcgi/timeline">timeline</a></li>
|
55
|
-
<li><a href="/thin/trac.fcgi/browser">code</a></li>
|
56
|
-
<li><a href="/thin/trac.fcgi/report">tickets</a></li>
|
57
|
-
<li><a href="/thin/trac.fcgi/newticket">new ticket</a></li>
|
58
|
-
</ul>
|
59
|
-
<div id="sidebar">
|
60
|
-
<h2>Files</h2>
|
61
|
-
<ul class="list">
|
62
|
-
<li><a href="../files/README.html" value="File: README">README</a></li>
|
63
|
-
<li><a href="../files/lib/thin/cgi_rb.html" value="File: cgi.rb">lib/thin/cgi.rb</a></li>
|
64
|
-
<li><a href="../files/lib/thin/cluster_rb.html" value="File: cluster.rb">lib/thin/cluster.rb</a></li>
|
65
|
-
<li><a href="../files/lib/thin/command_rb.html" value="File: command.rb">lib/thin/command.rb</a></li>
|
66
|
-
<li><a href="../files/lib/thin/consts_rb.html" value="File: consts.rb">lib/thin/consts.rb</a></li>
|
67
|
-
<li><a href="../files/lib/thin/daemonizing_rb.html" value="File: daemonizing.rb">lib/thin/daemonizing.rb</a></li>
|
68
|
-
<li><a href="../files/lib/thin/handler_rb.html" value="File: handler.rb">lib/thin/handler.rb</a></li>
|
69
|
-
<li><a href="../files/lib/thin/headers_rb.html" value="File: headers.rb">lib/thin/headers.rb</a></li>
|
70
|
-
<li><a href="../files/lib/thin/logging_rb.html" value="File: logging.rb">lib/thin/logging.rb</a></li>
|
71
|
-
<li><a href="../files/lib/thin/mime_types_rb.html" value="File: mime_types.rb">lib/thin/mime_types.rb</a></li>
|
72
|
-
<li><a href="../files/lib/thin/rails_rb.html" value="File: rails.rb">lib/thin/rails.rb</a></li>
|
73
|
-
<li><a href="../files/lib/thin/recipes_rb.html" value="File: recipes.rb">lib/thin/recipes.rb</a></li>
|
74
|
-
<li><a href="../files/lib/thin/request_rb.html" value="File: request.rb">lib/thin/request.rb</a></li>
|
75
|
-
<li><a href="../files/lib/thin/response_rb.html" value="File: response.rb">lib/thin/response.rb</a></li>
|
76
|
-
<li><a href="../files/lib/thin/server_rb.html" value="File: server.rb">lib/thin/server.rb</a></li>
|
77
|
-
<li><a href="../files/lib/thin/statuses_rb.html" value="File: statuses.rb">lib/thin/statuses.rb</a></li>
|
78
|
-
<li><a href="../files/lib/thin/version_rb.html" value="File: version.rb">lib/thin/version.rb</a></li>
|
79
|
-
<li><a href="../files/bin/thin.html" value="File: thin">bin/thin</a></li>
|
80
|
-
<li><a href="../files/bin/thin_cluster.html" value="File: thin_cluster">bin/thin_cluster</a></li>
|
81
|
-
</ul>
|
82
|
-
|
83
|
-
<h2>Classes</h2>
|
84
|
-
<ul class="list">
|
85
|
-
<li><a href="../classes/Thin.html" title="Module: Thin">Thin</a></li>
|
86
|
-
<li><a href="../classes/Thin/Commands.html" title="Module: Thin::Commands">Thin::Commands</a></li>
|
87
|
-
<li><a href="../classes/Thin/Daemonizable.html" title="Module: Thin::Daemonizable">Thin::Daemonizable</a></li>
|
88
|
-
<li><a href="../classes/Thin/Daemonizable/ClassMethods.html" title="Module: Thin::Daemonizable::ClassMethods">Thin::Daemonizable::ClassMethods</a></li>
|
89
|
-
<li><a href="../classes/Thin/VERSION.html" title="Module: Thin::VERSION">Thin::VERSION</a></li>
|
90
|
-
<li><a href="../classes/Thin/Logging.html" title="Module: Thin::Logging">Thin::Logging</a></li>
|
91
|
-
<li><a href="../classes/Thin/DirHandler.html" title="Class: Thin::DirHandler">Thin::DirHandler</a></li>
|
92
|
-
<li><a href="../classes/Thin/InvalidRequest.html" title="Class: Thin::InvalidRequest">Thin::InvalidRequest</a></li>
|
93
|
-
<li><a href="../classes/Thin/CGIWrapper.html" title="Class: Thin::CGIWrapper">Thin::CGIWrapper</a></li>
|
94
|
-
<li><a href="../classes/Thin/Command.html" title="Class: Thin::Command">Thin::Command</a></li>
|
95
|
-
<li><a href="../classes/Thin/Response.html" title="Class: Thin::Response">Thin::Response</a></li>
|
96
|
-
<li><a href="../classes/Thin/Headers.html" title="Class: Thin::Headers">Thin::Headers</a></li>
|
97
|
-
<li><a href="../classes/Thin/Server.html" title="Class: Thin::Server">Thin::Server</a></li>
|
98
|
-
<li><a href="../classes/Thin/CommandError.html" title="Class: Thin::CommandError">Thin::CommandError</a></li>
|
99
|
-
<li><a href="../classes/Thin/Request.html" title="Class: Thin::Request">Thin::Request</a></li>
|
100
|
-
<li><a href="../classes/Thin/RailsServer.html" title="Class: Thin::RailsServer">Thin::RailsServer</a></li>
|
101
|
-
<li><a href="../classes/Thin/Cluster.html" title="Class: Thin::Cluster">Thin::Cluster</a></li>
|
102
|
-
<li><a href="../classes/Thin/RailsHandler.html" title="Class: Thin::RailsHandler">Thin::RailsHandler</a></li>
|
103
|
-
<li><a href="../classes/Thin/Handler.html" title="Class: Thin::Handler">Thin::Handler</a></li>
|
104
|
-
<li><a href="../classes/Process.html" title="Module: Process">Process</a></li>
|
105
|
-
<li><a href="../classes/Kernel.html" title="Module: Kernel">Kernel</a></li>
|
106
|
-
</ul>
|
107
|
-
</div>
|
108
|
-
<div id="container">
|
109
|
-
<div id="header">
|
110
|
-
<a href="/thin/" title="Home">
|
111
|
-
<img id="logo" src="../logo.gif" />
|
112
|
-
</a>
|
113
|
-
<h2 id="tag_line">A fast and very simple Ruby web server</h2>
|
114
|
-
</div>
|
115
|
-
|
116
|
-
<div id="content">
|
117
|
-
<h2>Module: Kernel</h2>
|
118
|
-
|
119
|
-
|
120
|
-
<div id="Kernel" class="page_shade">
|
121
|
-
<div class="page">
|
122
|
-
<h3>Module Kernel < <a href="Handler.html">Object</a></h3>
|
123
|
-
|
124
|
-
<span class="path">(in files
|
125
|
-
<a href="../files/lib/thin/daemonizing_rb.html">lib/thin/daemonizing.rb</a>
|
126
|
-
)</span>
|
127
|
-
|
128
|
-
<p>
|
129
|
-
Handle a request and populate a response.
|
130
|
-
</p>
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
<h4>Includes</h4>
|
136
|
-
<ul>
|
137
|
-
<li><a href="Logging.html">Logging</a></li>
|
138
|
-
</ul>
|
139
|
-
|
140
|
-
<h2 class="ruled">Methods</h2>
|
141
|
-
<h4 class="ruled">
|
142
|
-
<span class="method-type" title="Public Instance method">Public Instance</span>
|
143
|
-
<strong><a name="M000073" href="#M000073" title="Permalink to Public Instance method: daemonize">daemonize()</a></strong>
|
144
|
-
</h4>
|
145
|
-
|
146
|
-
<p>
|
147
|
-
Turns the current script into a daemon process that detaches from the
|
148
|
-
console. It can be shut down with a TERM signal. Taken from ActiveSupport.
|
149
|
-
</p>
|
150
|
-
|
151
|
-
<div class="sourcecode">
|
152
|
-
<p class="source-link">[ <a href="javascript:toggleSource('M000073_source')" id="l_M000073_source">show source</a> ]</p>
|
153
|
-
<div id="M000073_source" class="dyn-source">
|
154
|
-
<pre>
|
155
|
-
<span class="ruby-comment cmt"># File lib/thin/daemonizing.rb, line 7</span>
|
156
|
-
7: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">daemonize</span>
|
157
|
-
8: <span class="ruby-identifier">exit</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">fork</span> <span class="ruby-comment cmt"># Parent exits, child continues.</span>
|
158
|
-
9: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">setsid</span> <span class="ruby-comment cmt"># Become session leader.</span>
|
159
|
-
10: <span class="ruby-identifier">exit</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">fork</span> <span class="ruby-comment cmt"># Zap session leader. See [1].</span>
|
160
|
-
11: <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">chdir</span> <span class="ruby-value str">"/"</span> <span class="ruby-comment cmt"># Release old working directory.</span>
|
161
|
-
12: <span class="ruby-constant">File</span>.<span class="ruby-identifier">umask</span> <span class="ruby-value">0000</span> <span class="ruby-comment cmt"># Ensure sensible umask. Adjust as needed.</span>
|
162
|
-
13: <span class="ruby-constant">STDIN</span>.<span class="ruby-identifier">reopen</span> <span class="ruby-value str">"/dev/null"</span> <span class="ruby-comment cmt"># Free file descriptors and</span>
|
163
|
-
14: <span class="ruby-constant">STDOUT</span>.<span class="ruby-identifier">reopen</span> <span class="ruby-value str">"/dev/null"</span>, <span class="ruby-value str">"a"</span> <span class="ruby-comment cmt"># point them somewhere sensible.</span>
|
164
|
-
15: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">reopen</span> <span class="ruby-constant">STDOUT</span> <span class="ruby-comment cmt"># STDOUT/ERR should better go to a logfile.</span>
|
165
|
-
16: <span class="ruby-identifier">trap</span>(<span class="ruby-value str">"TERM"</span>) { <span class="ruby-identifier">exit</span> }
|
166
|
-
17: <span class="ruby-keyword kw">end</span>
|
167
|
-
</pre>
|
168
|
-
</div>
|
169
|
-
</div>
|
170
|
-
|
171
|
-
</div>
|
172
|
-
</div>
|
173
|
-
|
174
|
-
|
175
|
-
</div>
|
176
|
-
</div>
|
177
|
-
<div id="footer">
|
178
|
-
<hr />
|
179
|
-
© <a href="http://macournoyer.com">Marc-André Cournoyer</a>
|
180
|
-
</div>
|
181
|
-
</body>
|
182
|
-
</html>
|
@@ -1,175 +0,0 @@
|
|
1
|
-
|
2
|
-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
3
|
-
<html>
|
4
|
-
<head>
|
5
|
-
<title>
|
6
|
-
thin » Module: Process
|
7
|
-
</title>
|
8
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
9
|
-
<link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
|
10
|
-
<script language="JavaScript" type="text/javascript">
|
11
|
-
// <![CDATA[
|
12
|
-
|
13
|
-
function toggleSource( id )
|
14
|
-
{
|
15
|
-
var elem
|
16
|
-
var link
|
17
|
-
|
18
|
-
if( document.getElementById )
|
19
|
-
{
|
20
|
-
elem = document.getElementById( id )
|
21
|
-
link = document.getElementById( "l_" + id )
|
22
|
-
}
|
23
|
-
else if ( document.all )
|
24
|
-
{
|
25
|
-
elem = eval( "document.all." + id )
|
26
|
-
link = eval( "document.all.l_" + id )
|
27
|
-
}
|
28
|
-
else
|
29
|
-
return false;
|
30
|
-
|
31
|
-
if( elem.style.display == "block" )
|
32
|
-
{
|
33
|
-
elem.style.display = "none"
|
34
|
-
link.innerHTML = "show source"
|
35
|
-
}
|
36
|
-
else
|
37
|
-
{
|
38
|
-
elem.style.display = "block"
|
39
|
-
link.innerHTML = "hide source"
|
40
|
-
}
|
41
|
-
}
|
42
|
-
|
43
|
-
function openCode( url )
|
44
|
-
{
|
45
|
-
window.open( url, "SOURCE_CODE", "width=400,height=400,scrollbars=yes" )
|
46
|
-
}
|
47
|
-
// ]]>
|
48
|
-
</script>
|
49
|
-
</head>
|
50
|
-
<body>
|
51
|
-
<ul id="menu">
|
52
|
-
<li><a href="/thin/">home</a></li>
|
53
|
-
<li><a href="/thin/doc/">doc</a></li>
|
54
|
-
<li><a href="/thin/trac.fcgi/timeline">timeline</a></li>
|
55
|
-
<li><a href="/thin/trac.fcgi/browser">code</a></li>
|
56
|
-
<li><a href="/thin/trac.fcgi/report">tickets</a></li>
|
57
|
-
<li><a href="/thin/trac.fcgi/newticket">new ticket</a></li>
|
58
|
-
</ul>
|
59
|
-
<div id="sidebar">
|
60
|
-
<h2>Files</h2>
|
61
|
-
<ul class="list">
|
62
|
-
<li><a href="../files/README.html" value="File: README">README</a></li>
|
63
|
-
<li><a href="../files/lib/thin/cgi_rb.html" value="File: cgi.rb">lib/thin/cgi.rb</a></li>
|
64
|
-
<li><a href="../files/lib/thin/cluster_rb.html" value="File: cluster.rb">lib/thin/cluster.rb</a></li>
|
65
|
-
<li><a href="../files/lib/thin/command_rb.html" value="File: command.rb">lib/thin/command.rb</a></li>
|
66
|
-
<li><a href="../files/lib/thin/consts_rb.html" value="File: consts.rb">lib/thin/consts.rb</a></li>
|
67
|
-
<li><a href="../files/lib/thin/daemonizing_rb.html" value="File: daemonizing.rb">lib/thin/daemonizing.rb</a></li>
|
68
|
-
<li><a href="../files/lib/thin/handler_rb.html" value="File: handler.rb">lib/thin/handler.rb</a></li>
|
69
|
-
<li><a href="../files/lib/thin/headers_rb.html" value="File: headers.rb">lib/thin/headers.rb</a></li>
|
70
|
-
<li><a href="../files/lib/thin/logging_rb.html" value="File: logging.rb">lib/thin/logging.rb</a></li>
|
71
|
-
<li><a href="../files/lib/thin/mime_types_rb.html" value="File: mime_types.rb">lib/thin/mime_types.rb</a></li>
|
72
|
-
<li><a href="../files/lib/thin/rails_rb.html" value="File: rails.rb">lib/thin/rails.rb</a></li>
|
73
|
-
<li><a href="../files/lib/thin/recipes_rb.html" value="File: recipes.rb">lib/thin/recipes.rb</a></li>
|
74
|
-
<li><a href="../files/lib/thin/request_rb.html" value="File: request.rb">lib/thin/request.rb</a></li>
|
75
|
-
<li><a href="../files/lib/thin/response_rb.html" value="File: response.rb">lib/thin/response.rb</a></li>
|
76
|
-
<li><a href="../files/lib/thin/server_rb.html" value="File: server.rb">lib/thin/server.rb</a></li>
|
77
|
-
<li><a href="../files/lib/thin/statuses_rb.html" value="File: statuses.rb">lib/thin/statuses.rb</a></li>
|
78
|
-
<li><a href="../files/lib/thin/version_rb.html" value="File: version.rb">lib/thin/version.rb</a></li>
|
79
|
-
<li><a href="../files/bin/thin.html" value="File: thin">bin/thin</a></li>
|
80
|
-
<li><a href="../files/bin/thin_cluster.html" value="File: thin_cluster">bin/thin_cluster</a></li>
|
81
|
-
</ul>
|
82
|
-
|
83
|
-
<h2>Classes</h2>
|
84
|
-
<ul class="list">
|
85
|
-
<li><a href="../classes/Thin.html" title="Module: Thin">Thin</a></li>
|
86
|
-
<li><a href="../classes/Thin/Commands.html" title="Module: Thin::Commands">Thin::Commands</a></li>
|
87
|
-
<li><a href="../classes/Thin/Daemonizable.html" title="Module: Thin::Daemonizable">Thin::Daemonizable</a></li>
|
88
|
-
<li><a href="../classes/Thin/Daemonizable/ClassMethods.html" title="Module: Thin::Daemonizable::ClassMethods">Thin::Daemonizable::ClassMethods</a></li>
|
89
|
-
<li><a href="../classes/Thin/VERSION.html" title="Module: Thin::VERSION">Thin::VERSION</a></li>
|
90
|
-
<li><a href="../classes/Thin/Logging.html" title="Module: Thin::Logging">Thin::Logging</a></li>
|
91
|
-
<li><a href="../classes/Thin/DirHandler.html" title="Class: Thin::DirHandler">Thin::DirHandler</a></li>
|
92
|
-
<li><a href="../classes/Thin/InvalidRequest.html" title="Class: Thin::InvalidRequest">Thin::InvalidRequest</a></li>
|
93
|
-
<li><a href="../classes/Thin/CGIWrapper.html" title="Class: Thin::CGIWrapper">Thin::CGIWrapper</a></li>
|
94
|
-
<li><a href="../classes/Thin/Command.html" title="Class: Thin::Command">Thin::Command</a></li>
|
95
|
-
<li><a href="../classes/Thin/Response.html" title="Class: Thin::Response">Thin::Response</a></li>
|
96
|
-
<li><a href="../classes/Thin/Headers.html" title="Class: Thin::Headers">Thin::Headers</a></li>
|
97
|
-
<li><a href="../classes/Thin/Server.html" title="Class: Thin::Server">Thin::Server</a></li>
|
98
|
-
<li><a href="../classes/Thin/CommandError.html" title="Class: Thin::CommandError">Thin::CommandError</a></li>
|
99
|
-
<li><a href="../classes/Thin/Request.html" title="Class: Thin::Request">Thin::Request</a></li>
|
100
|
-
<li><a href="../classes/Thin/RailsServer.html" title="Class: Thin::RailsServer">Thin::RailsServer</a></li>
|
101
|
-
<li><a href="../classes/Thin/Cluster.html" title="Class: Thin::Cluster">Thin::Cluster</a></li>
|
102
|
-
<li><a href="../classes/Thin/RailsHandler.html" title="Class: Thin::RailsHandler">Thin::RailsHandler</a></li>
|
103
|
-
<li><a href="../classes/Thin/Handler.html" title="Class: Thin::Handler">Thin::Handler</a></li>
|
104
|
-
<li><a href="../classes/Process.html" title="Module: Process">Process</a></li>
|
105
|
-
<li><a href="../classes/Kernel.html" title="Module: Kernel">Kernel</a></li>
|
106
|
-
</ul>
|
107
|
-
</div>
|
108
|
-
<div id="container">
|
109
|
-
<div id="header">
|
110
|
-
<a href="/thin/" title="Home">
|
111
|
-
<img id="logo" src="../logo.gif" />
|
112
|
-
</a>
|
113
|
-
<h2 id="tag_line">A fast and very simple Ruby web server</h2>
|
114
|
-
</div>
|
115
|
-
|
116
|
-
<div id="content">
|
117
|
-
<h2>Module: Process</h2>
|
118
|
-
|
119
|
-
|
120
|
-
<div id="Process" class="page_shade">
|
121
|
-
<div class="page">
|
122
|
-
<h3>Module Process < <a href="Handler.html">Object</a></h3>
|
123
|
-
|
124
|
-
<span class="path">(in files
|
125
|
-
<a href="../files/lib/thin/daemonizing_rb.html">lib/thin/daemonizing.rb</a>
|
126
|
-
)</span>
|
127
|
-
|
128
|
-
<p>
|
129
|
-
Handle a request and populate a response.
|
130
|
-
</p>
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
<h4>Includes</h4>
|
136
|
-
<ul>
|
137
|
-
<li><a href="Logging.html">Logging</a></li>
|
138
|
-
</ul>
|
139
|
-
|
140
|
-
<h2 class="ruled">Methods</h2>
|
141
|
-
<h4 class="ruled">
|
142
|
-
<span class="method-type" title="Public Instance method">Public Instance</span>
|
143
|
-
<strong><a name="M000072" href="#M000072" title="Permalink to Public Instance method: running?">running?(pid)</a></strong>
|
144
|
-
</h4>
|
145
|
-
|
146
|
-
<p>
|
147
|
-
Returns <tt>true</tt> the process identied by <tt>pid</tt> is running.
|
148
|
-
</p>
|
149
|
-
|
150
|
-
<div class="sourcecode">
|
151
|
-
<p class="source-link">[ <a href="javascript:toggleSource('M000072_source')" id="l_M000072_source">show source</a> ]</p>
|
152
|
-
<div id="M000072_source" class="dyn-source">
|
153
|
-
<pre>
|
154
|
-
<span class="ruby-comment cmt"># File lib/thin/daemonizing.rb, line 23</span>
|
155
|
-
23: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">running?</span>(<span class="ruby-identifier">pid</span>)
|
156
|
-
24: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">getpgid</span>(<span class="ruby-identifier">pid</span>) <span class="ruby-operator">!=</span> <span class="ruby-value">-1</span>
|
157
|
-
25: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">ESRCH</span>
|
158
|
-
26: <span class="ruby-keyword kw">false</span>
|
159
|
-
27: <span class="ruby-keyword kw">end</span>
|
160
|
-
</pre>
|
161
|
-
</div>
|
162
|
-
</div>
|
163
|
-
|
164
|
-
</div>
|
165
|
-
</div>
|
166
|
-
|
167
|
-
|
168
|
-
</div>
|
169
|
-
</div>
|
170
|
-
<div id="footer">
|
171
|
-
<hr />
|
172
|
-
© <a href="http://macournoyer.com">Marc-André Cournoyer</a>
|
173
|
-
</div>
|
174
|
-
</body>
|
175
|
-
</html>
|
data/doc/rdoc/classes/Thin.html
DELETED
@@ -1,184 +0,0 @@
|
|
1
|
-
|
2
|
-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
3
|
-
<html>
|
4
|
-
<head>
|
5
|
-
<title>
|
6
|
-
thin » Module: Thin
|
7
|
-
</title>
|
8
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
9
|
-
<link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
|
10
|
-
<script language="JavaScript" type="text/javascript">
|
11
|
-
// <![CDATA[
|
12
|
-
|
13
|
-
function toggleSource( id )
|
14
|
-
{
|
15
|
-
var elem
|
16
|
-
var link
|
17
|
-
|
18
|
-
if( document.getElementById )
|
19
|
-
{
|
20
|
-
elem = document.getElementById( id )
|
21
|
-
link = document.getElementById( "l_" + id )
|
22
|
-
}
|
23
|
-
else if ( document.all )
|
24
|
-
{
|
25
|
-
elem = eval( "document.all." + id )
|
26
|
-
link = eval( "document.all.l_" + id )
|
27
|
-
}
|
28
|
-
else
|
29
|
-
return false;
|
30
|
-
|
31
|
-
if( elem.style.display == "block" )
|
32
|
-
{
|
33
|
-
elem.style.display = "none"
|
34
|
-
link.innerHTML = "show source"
|
35
|
-
}
|
36
|
-
else
|
37
|
-
{
|
38
|
-
elem.style.display = "block"
|
39
|
-
link.innerHTML = "hide source"
|
40
|
-
}
|
41
|
-
}
|
42
|
-
|
43
|
-
function openCode( url )
|
44
|
-
{
|
45
|
-
window.open( url, "SOURCE_CODE", "width=400,height=400,scrollbars=yes" )
|
46
|
-
}
|
47
|
-
// ]]>
|
48
|
-
</script>
|
49
|
-
</head>
|
50
|
-
<body>
|
51
|
-
<ul id="menu">
|
52
|
-
<li><a href="/thin/">home</a></li>
|
53
|
-
<li><a href="/thin/doc/">doc</a></li>
|
54
|
-
<li><a href="/thin/trac.fcgi/timeline">timeline</a></li>
|
55
|
-
<li><a href="/thin/trac.fcgi/browser">code</a></li>
|
56
|
-
<li><a href="/thin/trac.fcgi/report">tickets</a></li>
|
57
|
-
<li><a href="/thin/trac.fcgi/newticket">new ticket</a></li>
|
58
|
-
</ul>
|
59
|
-
<div id="sidebar">
|
60
|
-
<h2>Files</h2>
|
61
|
-
<ul class="list">
|
62
|
-
<li><a href="../files/README.html" value="File: README">README</a></li>
|
63
|
-
<li><a href="../files/lib/thin/cgi_rb.html" value="File: cgi.rb">lib/thin/cgi.rb</a></li>
|
64
|
-
<li><a href="../files/lib/thin/cluster_rb.html" value="File: cluster.rb">lib/thin/cluster.rb</a></li>
|
65
|
-
<li><a href="../files/lib/thin/command_rb.html" value="File: command.rb">lib/thin/command.rb</a></li>
|
66
|
-
<li><a href="../files/lib/thin/consts_rb.html" value="File: consts.rb">lib/thin/consts.rb</a></li>
|
67
|
-
<li><a href="../files/lib/thin/daemonizing_rb.html" value="File: daemonizing.rb">lib/thin/daemonizing.rb</a></li>
|
68
|
-
<li><a href="../files/lib/thin/handler_rb.html" value="File: handler.rb">lib/thin/handler.rb</a></li>
|
69
|
-
<li><a href="../files/lib/thin/headers_rb.html" value="File: headers.rb">lib/thin/headers.rb</a></li>
|
70
|
-
<li><a href="../files/lib/thin/logging_rb.html" value="File: logging.rb">lib/thin/logging.rb</a></li>
|
71
|
-
<li><a href="../files/lib/thin/mime_types_rb.html" value="File: mime_types.rb">lib/thin/mime_types.rb</a></li>
|
72
|
-
<li><a href="../files/lib/thin/rails_rb.html" value="File: rails.rb">lib/thin/rails.rb</a></li>
|
73
|
-
<li><a href="../files/lib/thin/recipes_rb.html" value="File: recipes.rb">lib/thin/recipes.rb</a></li>
|
74
|
-
<li><a href="../files/lib/thin/request_rb.html" value="File: request.rb">lib/thin/request.rb</a></li>
|
75
|
-
<li><a href="../files/lib/thin/response_rb.html" value="File: response.rb">lib/thin/response.rb</a></li>
|
76
|
-
<li><a href="../files/lib/thin/server_rb.html" value="File: server.rb">lib/thin/server.rb</a></li>
|
77
|
-
<li><a href="../files/lib/thin/statuses_rb.html" value="File: statuses.rb">lib/thin/statuses.rb</a></li>
|
78
|
-
<li><a href="../files/lib/thin/version_rb.html" value="File: version.rb">lib/thin/version.rb</a></li>
|
79
|
-
<li><a href="../files/bin/thin.html" value="File: thin">bin/thin</a></li>
|
80
|
-
<li><a href="../files/bin/thin_cluster.html" value="File: thin_cluster">bin/thin_cluster</a></li>
|
81
|
-
</ul>
|
82
|
-
|
83
|
-
<h2>Classes</h2>
|
84
|
-
<ul class="list">
|
85
|
-
<li><a href="../classes/Thin.html" title="Module: Thin">Thin</a></li>
|
86
|
-
<li><a href="../classes/Thin/Commands.html" title="Module: Thin::Commands">Thin::Commands</a></li>
|
87
|
-
<li><a href="../classes/Thin/Daemonizable.html" title="Module: Thin::Daemonizable">Thin::Daemonizable</a></li>
|
88
|
-
<li><a href="../classes/Thin/Daemonizable/ClassMethods.html" title="Module: Thin::Daemonizable::ClassMethods">Thin::Daemonizable::ClassMethods</a></li>
|
89
|
-
<li><a href="../classes/Thin/VERSION.html" title="Module: Thin::VERSION">Thin::VERSION</a></li>
|
90
|
-
<li><a href="../classes/Thin/Logging.html" title="Module: Thin::Logging">Thin::Logging</a></li>
|
91
|
-
<li><a href="../classes/Thin/DirHandler.html" title="Class: Thin::DirHandler">Thin::DirHandler</a></li>
|
92
|
-
<li><a href="../classes/Thin/InvalidRequest.html" title="Class: Thin::InvalidRequest">Thin::InvalidRequest</a></li>
|
93
|
-
<li><a href="../classes/Thin/CGIWrapper.html" title="Class: Thin::CGIWrapper">Thin::CGIWrapper</a></li>
|
94
|
-
<li><a href="../classes/Thin/Command.html" title="Class: Thin::Command">Thin::Command</a></li>
|
95
|
-
<li><a href="../classes/Thin/Response.html" title="Class: Thin::Response">Thin::Response</a></li>
|
96
|
-
<li><a href="../classes/Thin/Headers.html" title="Class: Thin::Headers">Thin::Headers</a></li>
|
97
|
-
<li><a href="../classes/Thin/Server.html" title="Class: Thin::Server">Thin::Server</a></li>
|
98
|
-
<li><a href="../classes/Thin/CommandError.html" title="Class: Thin::CommandError">Thin::CommandError</a></li>
|
99
|
-
<li><a href="../classes/Thin/Request.html" title="Class: Thin::Request">Thin::Request</a></li>
|
100
|
-
<li><a href="../classes/Thin/RailsServer.html" title="Class: Thin::RailsServer">Thin::RailsServer</a></li>
|
101
|
-
<li><a href="../classes/Thin/Cluster.html" title="Class: Thin::Cluster">Thin::Cluster</a></li>
|
102
|
-
<li><a href="../classes/Thin/RailsHandler.html" title="Class: Thin::RailsHandler">Thin::RailsHandler</a></li>
|
103
|
-
<li><a href="../classes/Thin/Handler.html" title="Class: Thin::Handler">Thin::Handler</a></li>
|
104
|
-
<li><a href="../classes/Process.html" title="Module: Process">Process</a></li>
|
105
|
-
<li><a href="../classes/Kernel.html" title="Module: Kernel">Kernel</a></li>
|
106
|
-
</ul>
|
107
|
-
</div>
|
108
|
-
<div id="container">
|
109
|
-
<div id="header">
|
110
|
-
<a href="/thin/" title="Home">
|
111
|
-
<img id="logo" src="../logo.gif" />
|
112
|
-
</a>
|
113
|
-
<h2 id="tag_line">A fast and very simple Ruby web server</h2>
|
114
|
-
</div>
|
115
|
-
|
116
|
-
<div id="content">
|
117
|
-
<h2>Module: Thin</h2>
|
118
|
-
|
119
|
-
|
120
|
-
<div id="Thin" class="page_shade">
|
121
|
-
<div class="page">
|
122
|
-
<h3>Module Thin</h3>
|
123
|
-
|
124
|
-
<span class="path">(in files
|
125
|
-
<a href="../files/lib/thin/cgi_rb.html">lib/thin/cgi.rb</a>
|
126
|
-
<a href="../files/lib/thin/cluster_rb.html">lib/thin/cluster.rb</a>
|
127
|
-
<a href="../files/lib/thin/command_rb.html">lib/thin/command.rb</a>
|
128
|
-
<a href="../files/lib/thin/consts_rb.html">lib/thin/consts.rb</a>
|
129
|
-
<a href="../files/lib/thin/daemonizing_rb.html">lib/thin/daemonizing.rb</a>
|
130
|
-
<a href="../files/lib/thin/handler_rb.html">lib/thin/handler.rb</a>
|
131
|
-
<a href="../files/lib/thin/headers_rb.html">lib/thin/headers.rb</a>
|
132
|
-
<a href="../files/lib/thin/logging_rb.html">lib/thin/logging.rb</a>
|
133
|
-
<a href="../files/lib/thin/mime_types_rb.html">lib/thin/mime_types.rb</a>
|
134
|
-
<a href="../files/lib/thin/rails_rb.html">lib/thin/rails.rb</a>
|
135
|
-
<a href="../files/lib/thin/request_rb.html">lib/thin/request.rb</a>
|
136
|
-
<a href="../files/lib/thin/response_rb.html">lib/thin/response.rb</a>
|
137
|
-
<a href="../files/lib/thin/server_rb.html">lib/thin/server.rb</a>
|
138
|
-
<a href="../files/lib/thin/statuses_rb.html">lib/thin/statuses.rb</a>
|
139
|
-
<a href="../files/lib/thin/version_rb.html">lib/thin/version.rb</a>
|
140
|
-
)</span>
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
<h2 class="ruled">Methods</h2>
|
147
|
-
<h4 class="ruled">
|
148
|
-
<span class="method-type" title="Public Class method">Public Class</span>
|
149
|
-
<strong><a name="M000001" href="#M000001" title="Permalink to Public Class method: define_commands">define_commands(&block)</a></strong>
|
150
|
-
</h4>
|
151
|
-
|
152
|
-
<p>
|
153
|
-
Define a set of commands that can be parsed and executed. see bin/thin for
|
154
|
-
an example.
|
155
|
-
</p>
|
156
|
-
|
157
|
-
<div class="sourcecode">
|
158
|
-
<p class="source-link">[ <a href="javascript:toggleSource('M000001_source')" id="l_M000001_source">show source</a> ]</p>
|
159
|
-
<div id="M000001_source" class="dyn-source">
|
160
|
-
<pre>
|
161
|
-
<span class="ruby-comment cmt"># File lib/thin/command.rb, line 6</span>
|
162
|
-
6: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">define_commands</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">block</span>)
|
163
|
-
7: <span class="ruby-keyword kw">begin</span>
|
164
|
-
8: <span class="ruby-constant">Transat</span><span class="ruby-operator">::</span><span class="ruby-constant">Parser</span>.<span class="ruby-identifier">parse_and_execute</span>(<span class="ruby-constant">ARGV</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">block</span>)
|
165
|
-
9: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">CommandError</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">e</span>
|
166
|
-
10: <span class="ruby-identifier">puts</span> <span class="ruby-node">"Error: #{e}"</span>
|
167
|
-
11: <span class="ruby-keyword kw">end</span>
|
168
|
-
12: <span class="ruby-keyword kw">end</span>
|
169
|
-
</pre>
|
170
|
-
</div>
|
171
|
-
</div>
|
172
|
-
|
173
|
-
</div>
|
174
|
-
</div>
|
175
|
-
|
176
|
-
|
177
|
-
</div>
|
178
|
-
</div>
|
179
|
-
<div id="footer">
|
180
|
-
<hr />
|
181
|
-
© <a href="http://macournoyer.com">Marc-André Cournoyer</a>
|
182
|
-
</div>
|
183
|
-
</body>
|
184
|
-
</html>
|