gross 1.7.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG +410 -0
  3. data/README.md +102 -0
  4. data/Rakefile +25 -0
  5. data/bin/thin +6 -0
  6. data/example/adapter.rb +32 -0
  7. data/example/async_app.ru +126 -0
  8. data/example/async_chat.ru +247 -0
  9. data/example/async_tailer.ru +100 -0
  10. data/example/config.ru +22 -0
  11. data/example/monit_sockets +20 -0
  12. data/example/monit_unixsock +20 -0
  13. data/example/myapp.rb +1 -0
  14. data/example/ramaze.ru +12 -0
  15. data/example/thin.god +80 -0
  16. data/example/thin_solaris_smf.erb +36 -0
  17. data/example/thin_solaris_smf.readme.txt +150 -0
  18. data/example/vlad.rake +72 -0
  19. data/ext/thin_parser/common.rl +59 -0
  20. data/ext/thin_parser/ext_help.h +14 -0
  21. data/ext/thin_parser/extconf.rb +6 -0
  22. data/ext/thin_parser/parser.c +1447 -0
  23. data/ext/thin_parser/parser.h +49 -0
  24. data/ext/thin_parser/parser.rl +152 -0
  25. data/ext/thin_parser/thin.c +435 -0
  26. data/lib/rack/adapter/loader.rb +75 -0
  27. data/lib/rack/adapter/rails.rb +178 -0
  28. data/lib/thin.rb +45 -0
  29. data/lib/thin/backends/base.rb +167 -0
  30. data/lib/thin/backends/swiftiply_client.rb +56 -0
  31. data/lib/thin/backends/tcp_server.rb +34 -0
  32. data/lib/thin/backends/unix_server.rb +56 -0
  33. data/lib/thin/command.rb +53 -0
  34. data/lib/thin/connection.rb +215 -0
  35. data/lib/thin/controllers/cluster.rb +178 -0
  36. data/lib/thin/controllers/controller.rb +189 -0
  37. data/lib/thin/controllers/service.rb +76 -0
  38. data/lib/thin/controllers/service.sh.erb +39 -0
  39. data/lib/thin/daemonizing.rb +180 -0
  40. data/lib/thin/headers.rb +40 -0
  41. data/lib/thin/logging.rb +174 -0
  42. data/lib/thin/request.rb +162 -0
  43. data/lib/thin/response.rb +117 -0
  44. data/lib/thin/runner.rb +238 -0
  45. data/lib/thin/server.rb +290 -0
  46. data/lib/thin/stats.html.erb +216 -0
  47. data/lib/thin/stats.rb +52 -0
  48. data/lib/thin/statuses.rb +44 -0
  49. data/lib/thin/version.rb +32 -0
  50. metadata +156 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 172ed64fc8e7e961d4cd61635cacab063077143a
4
+ data.tar.gz: 9f3836dd8f40d281312d3bcc071725523540451a
5
+ SHA512:
6
+ metadata.gz: 8b02bc0457f620773d8f86fbb622065f1f01c7629159cf4cb71aaa9a9c51ae99034013e615d62fa7bcd9c839b1c1e57f4fec982b29f1cd1df147aa65ea678dec
7
+ data.tar.gz: b2b0f23a29748dd9be3ab53065692135d5a64301d1b0bb40a3080bf90680a4ea4f15e7163ad984f0f7fd8260559f148486be130c3f80e8bbcfbe870ed9fc2708
@@ -0,0 +1,410 @@
1
+ == 1.7.2 Bachmanity
2
+ * Add config support for ssl_version and ssl_cipher_list [frameworked]
3
+
4
+ == 1.7.1 Muffin Mode
5
+ * Ruby 2.4 support (Fixnum deprecation) [nimish-mehta]
6
+ * Allow ERB templates in config files [markets]
7
+
8
+ == 1.7.0 Dunder Mifflin
9
+ * Rack 2 support
10
+ * Ensure Response body.close is called in the same thread
11
+ Fixes issues with ActiveRecord connection management [#307]
12
+ * Fix TCP/IP Backend reports incorrect port when asked to bind to 0 [meschbach]
13
+ * Work with ruby 2.3's --enable-frozen-string-literal [jeremyevans]
14
+
15
+ == 1.6.4 Gob Bluth
16
+ * Increase REQUEST_PATH to 2048 symbols [X2rdas]
17
+ * Fix warning in logger [tenderlove]
18
+ * Add :timeout option for Rack::Server.new [sugitak]
19
+ * When restarting, exit on a next tick so we can send response back to a client [rsamoilov]
20
+ * Check for empty PID files [z1dane]
21
+ * Update Event Machine version to 1.0.4, Ruby 2.2.0 fix [freemanoid]
22
+
23
+ == 1.6.3 Protein Powder
24
+ * Add HTTP 422 status code [rajcybage]
25
+ * Add warning about EM reactor still running when stopping.
26
+ * Remove version number from "Server" HTTP header. [benbasson]
27
+ * Adding `--ssl-disable-verify` to allow disabling of client cert requests when SSL enabled [brucek]
28
+ * Ensure Tempfiles created by a large request are closed and deleted. [Tonkpils]
29
+
30
+ == 1.6.2 Doc Brown
31
+ * No longer replace response's body on HEAD request. Ensuring body.close will be called.
32
+ * Remove `---ssl-verify` option as EventMachine doesn't verify the certificate.
33
+ * Fix env['rack.peer_cert'] to return SSL certifcate.
34
+
35
+ == 1.6.1 Death Proof
36
+ * Regression: Default logger to STDOUT when using outside of CLI.
37
+ * Regression: Downgrade Rack required version back to 1.0 to work w/ prior Rails versions.
38
+
39
+ == 1.6.0 Greek Yogurt
40
+ * Accept absolute URL in request line, eg.: 'GET http://site.com/he/lo HTTP/1.1'.
41
+ * HEAD request no longer return a body in the response.
42
+ * No longer stop EventMachine's reactor loop unless it was started by Thin.
43
+ * Make request env keys upcasing locale-agnostic.
44
+ * Use Ruby's `Logger` for logging. [Akshay Moghe].
45
+ The logger can now be set using `Thin::Logging.logger=`.
46
+ Tracing of request is handled by a second logger, `Thin::Logging.trace_logger=`.
47
+ * Add --threadpool-size option to configure EM's thread pool size (default: 20).
48
+ * Pipelining is no longer supported.
49
+
50
+ == 1.5.1 Straight Razor
51
+ * Fix issue when running as another user/group without a PID file.
52
+ * Allow overriding Connection & Server response headers.
53
+ * Update vlad example [Mathieu Lemoine]
54
+ * Keep connections in a Hash to speedup deletion [slivu]
55
+ * Force kill using already known pid. Prevents "thin stop" from leaving a process that removed its
56
+ pid file, but is still running (e.g. hung on some at_exit callback) [Michal Kwiatkowski]
57
+
58
+ == 1.5.0 Knife
59
+ * Fix compilation under Ubuntu 12.04 with -Werror=format-security option.
60
+ * Raise an error when no PID file.
61
+ * Prevent duplicate response headers.
62
+ * Make proper response on exception [MasterLambaster].
63
+ * Automatically close idling pipeline connections on server stop [MasterLambaster].
64
+
65
+ == 1.4.1 Chromeo Fix
66
+ * Fix error when sending USR1 signal and no log file is supplied.
67
+
68
+ == 1.4.0 Chromeo
69
+ * kill -USR1 $PID for log rotation [catwell].
70
+ * Fix HUP signal being reseted after deamonization [atotic].
71
+ * Fix error with nil addresses in Connection#socket_address.
72
+
73
+ == 1.3.2 Low-bar Squat
74
+ * Remove mack and halcyon Rack adapters from automatic detection.
75
+
76
+ == 1.3.1 Triple Espresso
77
+ * Fix service not working pre 1.9.
78
+
79
+ == 1.3.0 Double Espresso
80
+ * BREAKING CHANGE: Thin no longer ships with fat Windows binaries.
81
+ From now on, to install on Windows, install https://github.com/oneclick/rubyinstaller/wiki/Development-Kit.
82
+ * BREAKING CHANGE: Remove automatic Content-Length setting.
83
+ It is now the responsibility of the app (or a middleware) to set the Content-Length.
84
+ * Log errors to STDERR [textgoeshere]
85
+ * Shut down gracefully when receiving SIGTERM [ddollar]
86
+
87
+ Processes are allowed a chance to shut down gracefully when receiving
88
+ SIGTERM (http://en.wikipedia.org/wiki/SIGTERM).
89
+
90
+ On Heroku, when shutting down a process, we send a SIGTERM followed 10
91
+ seconds later with a SIGKILL, similar to the behavior of the init daemon
92
+ on most Unix systems. This patch will allow Heroku apps to shut down
93
+ gracefully when they need to be terminated / moved.
94
+
95
+ == 1.2.11 Bat-Shit Crazy
96
+ * Fix pure Ruby gem to not include binary.
97
+
98
+ == 1.2.10 I'm dumb (BAD RELEASE, DON'T USE)
99
+ * I really am (bad release fix)
100
+
101
+ == 1.2.9 Black Keys Extra Plus Wow (BAD RELEASE, DON'T USE)
102
+ * Improve fat binary loading.
103
+
104
+ == 1.2.8 Black Keys
105
+ * Allow the connection to remain open for 1xx statuses [timshadel]
106
+
107
+ Both the 100 and 101 status codes require that the connection to the
108
+ server remain open. The 100 status code is used to tell the client that
109
+ the server is still receiving its request, and will continue to read
110
+ request input on the connection. The 101 status code is used to upgrade
111
+ the existing connection to another protocol, and specifically is NOT
112
+ used to upgrade a separate connection. Therefore, the connection must
113
+ remain open after this response in order to facilitate that.
114
+
115
+ * Accept IE7 badly encoded URL (eg.: %uEEEE)
116
+ * Fix gemspec to work w/ Bundler [smparkes]
117
+ * Add SSL support [tmm1]
118
+ * Catch Errno::EPERM in Process.running? [Tony Kemp]
119
+ On some systems (e.g. OpenBSD) you receive an EPERM exception if
120
+ you try to Process.getpgid on a process you do not own (even if you
121
+ are root). But it does mean that the process exists, so return true.
122
+ * Fix Rails version check that select which Rack adapter to use. Was using CGI adapter in Rails 3.
123
+ * Ignore SIGHUP when no restart block is given
124
+ * Add SSL options to thin command line tool [goldmann]
125
+
126
+ --ssl Enables SSL
127
+ --ssl-key-file PATH Path to private key
128
+ --ssl-cert-file PATH Path to certificate
129
+ --ssl-verify Enables SSL certificate verification
130
+
131
+ * Expose peer SSL certificate in env (rack.peer_cert) [fd]
132
+ * Adjusting unix socket permissions to be more open [mbj]
133
+
134
+ == 1.2.7 No Hup
135
+ * Support multiple Ruby version (fat binaries under windows)
136
+ * Do not trap unsupported HUP signal on Windows
137
+
138
+ == 1.2.6 Crazy Delicious
139
+ * Make work with Rails 3 out-of-the-box.
140
+ * Auto-detect and load config.ru files on start. Makes Rails 3 work.
141
+ * Fix signals being ignored under 1.9 when daemonized.
142
+
143
+ == 1.2.5 This Is Not A Web Server
144
+ * Add rolling restart support (--onebyone option) [sikachu]
145
+ * Force external_encoding of request's body to ASCII_8BIT [jeremyz]
146
+ * Ensure Rack base API is used in Rails adapter only if version >= 2.3.2 [#111 state:resolved]
147
+
148
+ == 1.2.4 Flaming Astroboy
149
+ * Fix a few issues in thin to make it a better "gem citizen" [josh]
150
+ * Fix test for rack based Rails in adapter under Ruby >= 1.8.7 [#109 state:resolved]
151
+ * Fix Remote address spoofing vulnerability in Connection#remote_address [Alexey Borzenkov]
152
+ * Fix uninitialized constant ActionController::Dispatcher error with Rails 1.2.3 [Chris Anderton] [#103 state:resolved]
153
+
154
+ == 1.2.2 I Find Your Lack of Sauce Disturbing release
155
+ * Fix force kill under 1.9 [Alexey Chebotar]
156
+ * Fix regression when --only option is used w/ --socket.
157
+ * Add process name 'tag' functionality. Easier to distinguish thin daemons
158
+ from eachother in process listing [ctcherry]
159
+
160
+ == 1.2.1 Asynctilicious Ultra Supreme release
161
+ * Require Rack 1.0.0
162
+ * Require EventMachine 0.12.6
163
+ * Use Rails Rack based dispatcher when available
164
+ * Allow String for response body
165
+ * Require openssl before eventmachine to prevent crash in 1.9
166
+
167
+ == 1.2.0 Asynctilicious Supreme release
168
+ * Add support for Windows mingw Ruby distro [Juan C. Rodriguez]
169
+ * Add async response support, see example/async_*.ru [raggi]
170
+
171
+ == 1.1.1 Super Disco Power Plus release
172
+ * Fix bug when running with only options [hasimo]
173
+
174
+ == 1.1.0 Super Disco Power release
175
+ * Require EventMachine 0.12.4
176
+ * Remove Thin handler, now part of Rack 0.9.1
177
+ * Fix Rack protocol version to 0.1 in environment hash.
178
+ * Fix error when passing no_epoll option to a cluster.
179
+ * Omit parsing #defined strings [Jérémy Zurcher]
180
+ * Defaults SERVER_NAME to localhost like webrick does [#87 state:resolved]
181
+ * Namespace parser to prevent error when mongrel is required [cliffmoon]
182
+ * Set RACK_ENV based on environment option when loading rackup file [Curtis Summers] [#83 state:resolved]
183
+ * Fixes a warning RE relative_url_root when using a prefix with Rails 2.1.1 [seriph] [#85 state:resolved]
184
+ * --only can work as a sequence number (if < 80) or a port number (if >= 80) [jmay] [#81 state:resolved]
185
+
186
+ == 1.0.0 That's What She Said release
187
+ * Fixed vlad.rake to allow TCP or socket [hellekin]
188
+ * Updated Mack adapter to handle both <0.8.0 and >0.8.0 [Mark Bates]
189
+ * rails rack adapter uses File.readable_real? so it recognizes ACL permissions [Ricardo Chimal]
190
+ * Log a warning if Rack application returns nil body [Michael S. Klishin]
191
+ * Handle nil and Time header values correctly [#76 state:resolved] [tmm1]
192
+ * Add Content-Length header to response automatically when possible [#74 state:resolved] [dkubb]
193
+ * Runner now remembers -r, -D and -V parameters so that clustered servers inherit those and
194
+ `restart` keep your parameters.
195
+ * Make Set-Cookie header, in Rails adapter, compatible with current Rack spec [Pedro Belo]
196
+ [#73, state:resolved]
197
+ * Add --no-epoll option to disable epoll usage on Linux [#61 state:resolved]
198
+ * Add --force (-f) option to force stopping of a daemonized server [#72 state:resolved]
199
+ * Update halycon adapter loader [mtodd]
200
+
201
+ == 0.8.2 Double Margarita release
202
+ * Require EventMachine 0.12.0
203
+ * [bug] Fix timeout handling when running command
204
+ * [bug] Fix hanging when restarting and no process is running in single server move, fixes #67
205
+ * Added Mack adapter [markbates]
206
+ * Allow rackup .rb files by getting a conventionally named constant as the app [bmizerany]
207
+
208
+ == 0.8.1 Rebel Porpoise release
209
+ * [bug] Rescue all types of errors when processing request, fixes #62
210
+ * [bug] Use Swiftiply backend when -y option is specified, fixes #63 and #64
211
+ * Allow passing port as a string in Server.new
212
+ * Define deferred?(env) in your Rack application to set if a request is handled in a
213
+ thread (return true) or not (return false).
214
+
215
+ == 0.8.0 Dodgy Dentist release
216
+ * [bug] Fix server crash when header too large.
217
+ * Add --require (-r) option to require a library, before executing your script.
218
+ * Rename --rackup short option to -R, warn and load as rackup when file ends with .ru.
219
+ * List supported adapters in command usage.
220
+ * Add file adapter to built-in adapter, serve static files in current directory.
221
+ * Allow disabling signal handling in Server with :signals => false
222
+ * Make Server.new arguments more flexible, can now specify any of host, port, app or hash options.
223
+ * Add --backend option to specified which backend to use, closes #55
224
+ * [bug] Serve static file only on GET and HEAD requests in Rails adapter, fixes #58
225
+ * Add threaded option to run server in threaded mode, calling the application in a
226
+ thread allowing for concurrency in the Rack adapter, closes #46
227
+ * Guess which adapter to use from directory (chdir option)
228
+ or use specified one in 'adapter' option, re #47.
229
+
230
+ == 0.7.1 Fancy Pants release
231
+ * Clean stale PID files when starting as daemon, fixes #53 [Chu Yeow]
232
+ * Require EventMachine 0.11.0 for UNIX domain sockets. Until it's released, install from:
233
+ gem install eventmachine --source http://code.macournoyer.com
234
+ * Ruby 1.8.5 compatibility, closes #49 [Wincent Colaiuta]
235
+ * Move all EventMachine stuff out of Server, you can now create a Thin Backend that
236
+ does not depend on EventMachine.
237
+ * Rename Connector to Backend. Extend Thin::Backends::Base to implement your own.
238
+ * Fix high memory usage with big POST body, fixes #48
239
+
240
+ == 0.7.0 Spherical Cow release
241
+ * Add --max-persistent-conns option to sets the maximum number of persistent connections.
242
+ Set to 0 to disable Keep-Alive.
243
+ * INT signal now force stop and QUIT signal gracefully stops.
244
+ * Warn when descriptors table size can't be set as high as expected.
245
+ * Eval Rackup config file using top level bindings.
246
+ * Remove daemons gem dependency on Windows plateform, fixes #45.
247
+ * Change default timeout from 60 to 30 seconds.
248
+ * Add --max-conns option to sets the maximum number of file or socket descriptors that
249
+ your process may open, defaults to 1024.
250
+ * Tail logfile when stopping and restarting a demonized server, fixes #26.
251
+ * Wrap application in a Rack::CommonLogger adapter in debug mode.
252
+ * --debug (-D) option no longer set $DEBUG so logging will be less verbose
253
+ and Ruby won't be too strict, fixes #36.
254
+ * Deprecate Server#silent in favour of Logging.silent.
255
+ * Persistent connection (keep-alive) support.
256
+ * Fix -s option not being included in generated config file, fixes #37.
257
+ * Add Swiftiply support. Use w/ the --swiftiply (-y) option in the thin script,
258
+ closes #28 [Alex MacCaw]
259
+
260
+ == 0.6.4 Sexy Lobster release
261
+ * Fix error when stopping server on UNIX domain socket, fixes #42
262
+ * Rescue errors in Connection#get_peername more gracefully, setting REMOTE_ADDR to nil, fixes #43
263
+
264
+ == 0.6.3 Ninja Cookie release
265
+ * Add tasks for Vlad the Deployer in example/vlad.rake [cnantais]
266
+ * Add Ramaze Rackup config file in example dir [tmm1]
267
+ Use like this from you Ramaze app dir:
268
+
269
+ thin start -r /path/to/thin/example/ramaze.ru
270
+
271
+ * Add the --rackup option to load a Rack config file instead of the Rails adapter.
272
+ So you can use any framework with the thin script and start cluster and stuff like that.
273
+ A Rack config file is one that is usable through the rackup command and looks like this:
274
+
275
+ use Rack::CommonLogger
276
+ run MyCrazyRackAdapter.new(:uterly, 'cool')
277
+
278
+ Then use it with thin like this:
279
+
280
+ thin start --rackup config.ru
281
+
282
+ * thin config --chrdir ... -C thin/yml do not change current directory anymore, fixes #33.
283
+ * Add a better sample god config file in example/thin.god that loads all info from config
284
+ files in /etc/thin. Drop-in replacement for the thin runlevel service [Gump].
285
+ * Add support for specifying a custom Connector to the server and add more doc about Server
286
+ configuration.
287
+ * Add a script to run thin as a runlevel service that can start at startup, closes #31 [Gump]
288
+ Setup the service like this:
289
+
290
+ sudo thin install /etc/thin
291
+
292
+ This will install the boot script under /etc/init.d/thin. Then copy your config files to
293
+ /etc/thin. Works only under Linux.
294
+ * Set process name to 'thin server (0.0.0.0:3000)' when running as a daemon, closes #32.
295
+ * Make sure chdir option from config file is used when present.
296
+ * Raise an error when starting a server as a daemon and pid file already exist, fixes #27.
297
+
298
+ == 0.6.2 Rambo release
299
+ * Server now let current connections finish before stopping, fixes #18
300
+ * Fix uploading hanging bug when body is moved to a tempfile,
301
+ also delete the tempfile properly upon completion, fixes #25
302
+ * 'thin restart' now sends HUP signals rather then stopping & starting, closes #17
303
+ * HUP signal now launches a new process with the same options.
304
+ * Add PID and more info from the last request to the Stats adapter
305
+ mostly taken from Rack::ShowException.
306
+ * pid and log files in cluster are no longer required to be relative to the
307
+ app directory (chdir option), fixes #24
308
+ * Revert to using #each when building response headers under Ruby 1.8,
309
+ solves an issue w/ Camping adapter, fixes #22
310
+ * Restructure thin script options in 3 sections: server, daemon and cluster
311
+ * Add --only (-o) option to control only one server of a cluster.
312
+ * Stylize stats page and make the url configurable from the thin script.
313
+ * Raise error if attempting to use unix sockets on windows.
314
+ * Add example config files for http://www.tildeslash.com/monit usage.
315
+ Include the example file using "include /path/to/thin/monit/file" in your monitrc file.
316
+ The group settings let you do this to manage your clusters:
317
+
318
+ sudo monit -g blog restart all
319
+
320
+ There are examples of thin listening on sockets and thin listening on unix sockets.
321
+
322
+ == 0.6.1 Cheesecake release
323
+ * Remove socket file when server stops.
324
+ * Set back cluster to use 'thin' command to launch servers.
325
+
326
+ == 0.6.0 Big Pony release
327
+ * Add support for connection through UNIX domain socket.
328
+ Use the --socket (-S) option w/ the thin script to configure the socket filename.
329
+ Nginx support binding to a UNIX socket like this:
330
+
331
+ upstream backend {
332
+ server unix:/tmp/thin.0.sock;
333
+ server unix:/tmp/thin.1.sock;
334
+ server unix:/tmp/thin.2.sock;
335
+ }
336
+
337
+ Start your servers like this:
338
+
339
+ thin start -s3 -S/tmp/thin.sock
340
+
341
+ * Remove Server#listen! method. Use Server#start instead.
342
+ * Server can now yield a Rack::Builder to allow building an app in one call:
343
+
344
+ Server.start '0.0.0.0', 3000 do
345
+ use Rack::CommonLogger
346
+ use Rack::ShowExceptions
347
+ map "/lobster" do
348
+ use Rack::Lint
349
+ run Rack::Lobster.new
350
+ end
351
+ end
352
+
353
+ * Add a very basic stats page through Stats adapter, load w/ --stats and browse to /stats.
354
+ * Add --trace (-V) option to trace request/response and get backtrace w/out all Ruby debug stuff.
355
+ * Add --config (-C) option to load options from a config file in thin script [Matt Todd].
356
+ * Alter response headers to output directly to a string.
357
+ * Improve specs stability.
358
+ * Move request body to a Tempfile if too big (> 112 KB)
359
+ * Remove useless check for max header size in Request (already done in the parser)
360
+
361
+ == 0.5.4 Flying Mustard release
362
+ * Don't read the full body, use direct streaming when sending response.
363
+ See: Response#each
364
+ As a result, the Content-Length can not be calculated anymore.
365
+ You have to do set this in your adapter. All frameworks do it anyway.
366
+ It improve memory usage and boost speed for low concurrency.
367
+ Thanks to Kent Sibilev and Ezra for their help on that one.
368
+ * Add 'Server' response header
369
+ * Fix --user and --group option not changing daemon process privileges
370
+
371
+ == 0.5.3 Purple Yogurt release
372
+ * win32 pre-compiled gem now available
373
+ * change rake task configuration to allow win32 gem build
374
+ * Add prefix option to thin script to mount app under a given path.
375
+
376
+ == 0.5.2 Cheezburger release
377
+ * Add cluster support through the -s option in the thin script, start 3 thins like this:
378
+ thin start -s3 -p3000
379
+ 3 thin servers will be started on port 3000, 3001, 3002, also the port number will be
380
+ injected in the pid and log filenames.
381
+ * Fix IOError when writing to logger when starting server as a daemon.
382
+ * Really change directory when the -c option is specified.
383
+ * Add restart command to thin script.
384
+ * Fix typos in thin script usage message and expand chdir path.
385
+ * Rename thin script options to be the same as mongrel_rails script [thronedrk]:
386
+ -o --host => -a --address
387
+ --log-file => --log
388
+ --pid-file => --pid
389
+ --env => --environment
390
+
391
+ == 0.5.1 LOLCAT release
392
+ * Add URL rewriting to Rails adapter so that page caching works and / fetches index.html if present.
393
+ * Fix bug in multiline response header parsing.
394
+ * Add specs for the Rails adapter.
395
+ * Fix Set-Cookie headers in Rails adapter to handle multiple values correctly.
396
+ * Fix Ruby 1.9 incompatibility in Response#headers= and Rakefile.
397
+ * Fix parser to be Ruby 1.9 compatible [Aman Gupta]
398
+ * Set gemspec to use EventMachine version 0.8.1 as it's the latest one having precompiled windows binaries.
399
+ [Francis Cianfrocca].
400
+ * Add -D option to thin script to set debugging on.
401
+ * Output incoming data and response when debugging is on.
402
+
403
+ == 0.5.0
404
+ * Full rewrite to use EventMachine, Rack and Mongrel parser
405
+
406
+ == 0.4.1
407
+ * Fix Rails environment option not being used in thin script.
408
+
409
+ == 0.4.0
410
+ * First alphaish release as a gem.
@@ -0,0 +1,102 @@
1
+ # Thin
2
+
3
+ A small and fast Ruby web server
4
+
5
+ ## Installation
6
+
7
+ ```
8
+ gem install thin
9
+ ```
10
+
11
+ Or add `thin` to your `Gemfile`:
12
+
13
+ ```ruby
14
+ gem 'thin'
15
+ ```
16
+
17
+ ## Usage
18
+
19
+ A +thin+ script offers an easy way to start your Rack application:
20
+
21
+ ```
22
+ thin start
23
+ ```
24
+
25
+ Browse the `example` directory for sample applications.
26
+
27
+ ## Usage with Rails Action Cable
28
+
29
+ To use Thin with Action Cable, add the following to your `Gemfile`:
30
+
31
+ ```ruby
32
+ gem 'faye-websocket'
33
+ gem 'thin' # If not already done
34
+ ```
35
+
36
+ Create a `config/initializers/thin_action_cable.rb`:
37
+
38
+ ```ruby
39
+ Rails.application.config.action_cable.use_faye = true
40
+ Faye::WebSocket.load_adapter 'thin'
41
+ ```
42
+
43
+ ### CLI
44
+
45
+ Use a rackup (config.ru) file and bind to localhost port 8080:
46
+
47
+ ```
48
+ thin -R config.ru -a 127.0.0.1 -p 8080 start
49
+ ```
50
+
51
+ Store the server process ID, log to a file and daemonize:
52
+
53
+ ```
54
+ thin -p 9292 -P tmp/pids/thin.pid -l logs/thin.log -d start
55
+ ```
56
+
57
+ Thin is quite flexible in that many options can be specified at the command line (see `thin -h` for more).
58
+
59
+ ### Configuration files
60
+
61
+ You can create a configuration file using `thin config -C config/thin.yml`.
62
+
63
+ You can then use it with all commands, such as: `thin start -C config/thin.yml`.
64
+
65
+ Here is an example config file:
66
+
67
+ ```yaml
68
+ ---
69
+ user: www-data
70
+ group: www-data
71
+ pid: tmp/pids/thin.pid
72
+ timeout: 30
73
+ wait: 30
74
+ log: log/thin.log
75
+ max_conns: 1024
76
+ require: []
77
+ environment: production
78
+ max_persistent_conns: 512
79
+ servers: 1
80
+ threaded: true
81
+ no-epoll: true
82
+ daemonize: true
83
+ socket: tmp/sockets/thin.sock
84
+ chdir: /path/to/your/apps/root
85
+ tag: a-name-to-show-up-in-ps aux
86
+ ```
87
+
88
+ ## License
89
+
90
+ Ruby License, http://www.ruby-lang.org/en/LICENSE.txt.
91
+
92
+ ## Credits
93
+
94
+ The parser was originally from Mongrel http://mongrel.rubyforge.org by Zed Shaw.
95
+ Mongrel is copyright 2007 Zed A. Shaw and contributors. It is licensed under
96
+ the Ruby license and the GPL2.
97
+
98
+ Thin is copyright Marc-Andre Cournoyer <macournoyer@gmail.com>
99
+
100
+ Get help at http://groups.google.com/group/thin-ruby/
101
+ Report bugs at https://github.com/macournoyer/thin/issues
102
+ and major security issues directly to me at macournoyer@gmail.com.