336 lines
16 KiB
Plaintext
336 lines
16 KiB
Plaintext
|
== 1.3.1 Triple Espresso
|
||
|
* Fix service not working pre 1.9.
|
||
|
|
||
|
== 1.3.0 Double Espresso
|
||
|
* BREAKING CHANGE: Thin no longer ships with fat Windows binaries.
|
||
|
From now on, to install on Windows, install https://github.com/oneclick/rubyinstaller/wiki/Development-Kit.
|
||
|
* BREAKING CHANGE: Remove automatic Content-Length setting.
|
||
|
It is now the responsibility of the app (or a middleware) to set the Content-Length.
|
||
|
* Log errors to STDERR [textgoeshere]
|
||
|
* Shut down gracefully when receiving SIGTERM [ddollar]
|
||
|
|
||
|
Processes are allowed a chance to shut down gracefully when receiving
|
||
|
SIGTERM (http://en.wikipedia.org/wiki/SIGTERM).
|
||
|
|
||
|
On Heroku, when shutting down a process, we send a SIGTERM followed 10
|
||
|
seconds later with a SIGKILL, similar to the behavior of the init daemon
|
||
|
on most Unix systems. This patch will allow Heroku apps to shut down
|
||
|
gracefully when they need to be terminated / moved.
|
||
|
|
||
|
== 1.2.11 Bat-Shit Crazy
|
||
|
* Fix pure Ruby gem to not include binary.
|
||
|
|
||
|
== 1.2.10 I'm dumb (BAD RELEASE, DON'T USE)
|
||
|
* I really am (bad release fix)
|
||
|
|
||
|
== 1.2.9 Black Keys Extra Plus Wow (BAD RELEASE, DON'T USE)
|
||
|
* Improve fat binary loading.
|
||
|
|
||
|
== 1.2.8 Black Keys
|
||
|
* Allow the connection to remain open for 1xx statuses [timshadel]
|
||
|
|
||
|
Both the 100 and 101 status codes require that the connection to the
|
||
|
server remain open. The 100 status code is used to tell the client that
|
||
|
the server is still receiving its request, and will continue to read
|
||
|
request input on the connection. The 101 status code is used to upgrade
|
||
|
the existing connection to another protocol, and specifically is NOT
|
||
|
used to upgrade a separate connection. Therefore, the connection must
|
||
|
remain open after this response in order to facilitate that.
|
||
|
|
||
|
* Accept IE7 badly encoded URL (eg.: %uEEEE)
|
||
|
* Fix gemspec to work w/ Bundler [smparkes]
|
||
|
* Add SSL support [tmm1]
|
||
|
* Catch Errno::EPERM in Process.running? [Tony Kemp]
|
||
|
On some systems (e.g. OpenBSD) you receive an EPERM exception if
|
||
|
you try to Process.getpgid on a process you do not own (even if you
|
||
|
are root). But it does mean that the process exists, so return true.
|
||
|
* Fix Rails version check that select which Rack adapter to use. Was using CGI adapter in Rails 3.
|
||
|
* Ignore SIGHUP when no restart block is given
|
||
|
* Add SSL options to thin command line tool [goldmann]
|
||
|
|
||
|
--ssl Enables SSL
|
||
|
--ssl-key-file PATH Path to private key
|
||
|
--ssl-cert-file PATH Path to certificate
|
||
|
--ssl-verify Enables SSL certificate verification
|
||
|
|
||
|
* Expose peer SSL certificate in env (rack.peer_cert) [fd]
|
||
|
* Adjusting unix socket permissions to be more open [mbj]
|
||
|
|
||
|
== 1.2.7 No Hup
|
||
|
* Support multiple Ruby version (fat binaries under windows)
|
||
|
* Do not trap unsupported HUP signal on Windows
|
||
|
|
||
|
== 1.2.6 Crazy Delicious
|
||
|
* Make work with Rails 3 out-of-the-box.
|
||
|
* Auto-detect and load config.ru files on start. Makes Rails 3 work.
|
||
|
* Fix signals being ignored under 1.9 when daemonized.
|
||
|
|
||
|
== 1.2.5 This Is Not A Web Server
|
||
|
* Add rolling restart support (--onebyone option) [sikachu]
|
||
|
* Force external_encoding of request's body to ASCII_8BIT [jeremyz]
|
||
|
* Ensure Rack base API is used in Rails adapter only if version >= 2.3.2 [#111 state:resolved]
|
||
|
|
||
|
== 1.2.4 Flaming Astroboy
|
||
|
* Fix a few issues in thin to make it a better "gem citizen" [josh]
|
||
|
* Fix test for rack based Rails in adapter under Ruby >= 1.8.7 [#109 state:resolved]
|
||
|
* Fix Remote address spoofing vulnerability in Connection#remote_address [Alexey Borzenkov]
|
||
|
* Fix uninitialized constant ActionController::Dispatcher error with Rails 1.2.3 [Chris Anderton] [#103 state:resolved]
|
||
|
|
||
|
== 1.2.2 I Find Your Lack of Sauce Disturbing release
|
||
|
* Fix force kill under 1.9 [Alexey Chebotar]
|
||
|
* Fix regression when --only option is used w/ --socket.
|
||
|
* Add process name 'tag' functionality. Easier to distinguish thin daemons
|
||
|
from eachother in process listing [ctcherry]
|
||
|
|
||
|
== 1.2.1 Asynctilicious Ultra Supreme release
|
||
|
* Require Rack 1.0.0
|
||
|
* Require EventMachine 0.12.6
|
||
|
* Use Rails Rack based dispatcher when available
|
||
|
* Allow String for response body
|
||
|
* Require openssl before eventmachine to prevent crash in 1.9
|
||
|
|
||
|
== 1.2.0 Asynctilicious Supreme release
|
||
|
* Add support for Windows mingw Ruby distro [Juan C. Rodriguez]
|
||
|
* Add async response support, see example/async_*.ru [raggi]
|
||
|
|
||
|
== 1.1.1 Super Disco Power Plus release
|
||
|
* Fix bug when running with only options [hasimo]
|
||
|
|
||
|
== 1.1.0 Super Disco Power release
|
||
|
* Require EventMachine 0.12.4
|
||
|
* Remove Thin handler, now part of Rack 0.9.1
|
||
|
* Fix Rack protocol version to 0.1 in environment hash.
|
||
|
* Fix error when passing no_epoll option to a cluster.
|
||
|
* Omit parsing #defined strings [Jérémy Zurcher]
|
||
|
* Defaults SERVER_NAME to localhost like webrick does [#87 state:resolved]
|
||
|
* Namespace parser to prevent error when mongrel is required [cliffmoon]
|
||
|
* Set RACK_ENV based on environment option when loading rackup file [Curtis Summers] [#83 state:resolved]
|
||
|
* Fixes a warning RE relative_url_root when using a prefix with Rails 2.1.1 [seriph] [#85 state:resolved]
|
||
|
* --only can work as a sequence number (if < 80) or a port number (if >= 80) [jmay] [#81 state:resolved]
|
||
|
|
||
|
== 1.0.0 That's What She Said release
|
||
|
* Fixed vlad.rake to allow TCP or socket [hellekin]
|
||
|
* Updated Mack adapter to handle both <0.8.0 and >0.8.0 [Mark Bates]
|
||
|
* rails rack adapter uses File.readable_real? so it recognizes ACL permissions [Ricardo Chimal]
|
||
|
* Log a warning if Rack application returns nil body [Michael S. Klishin]
|
||
|
* Handle nil and Time header values correctly [#76 state:resolved] [tmm1]
|
||
|
* Add Content-Length header to response automatically when possible [#74 state:resolved] [dkubb]
|
||
|
* Runner now remembers -r, -D and -V parameters so that clustered servers inherit those and
|
||
|
`restart` keep your parameters.
|
||
|
* Make Set-Cookie header, in Rails adapter, compatible with current Rack spec [Pedro Belo]
|
||
|
[#73, state:resolved]
|
||
|
* Add --no-epoll option to disable epoll usage on Linux [#61 state:resolved]
|
||
|
* Add --force (-f) option to force stopping of a daemonized server [#72 state:resolved]
|
||
|
* Update halycon adapter loader [mtodd]
|
||
|
|
||
|
== 0.8.2 Double Margarita release
|
||
|
* Require EventMachine 0.12.0
|
||
|
* [bug] Fix timeout handling when running command
|
||
|
* [bug] Fix hanging when restarting and no process is running in single server move, fixes #67
|
||
|
* Added Mack adapter [markbates]
|
||
|
* Allow rackup .rb files by getting a conventionally named constant as the app [bmizerany]
|
||
|
|
||
|
== 0.8.1 Rebel Porpoise release
|
||
|
* [bug] Rescue all types of errors when processing request, fixes #62
|
||
|
* [bug] Use Swiftiply backend when -y option is specified, fixes #63 and #64
|
||
|
* Allow passing port as a string in Server.new
|
||
|
* Define deferred?(env) in your Rack application to set if a request is handled in a
|
||
|
thread (return true) or not (return false).
|
||
|
|
||
|
== 0.8.0 Dodgy Dentist release
|
||
|
* [bug] Fix server crash when header too large.
|
||
|
* Add --require (-r) option to require a library, before executing your script.
|
||
|
* Rename --rackup short option to -R, warn and load as rackup when file ends with .ru.
|
||
|
* List supported adapters in command usage.
|
||
|
* Add file adapter to built-in adapter, serve static files in current directory.
|
||
|
* Allow disabling signal handling in Server with :signals => false
|
||
|
* Make Server.new arguments more flexible, can now specify any of host, port, app or hash options.
|
||
|
* Add --backend option to specified which backend to use, closes #55
|
||
|
* [bug] Serve static file only on GET and HEAD requests in Rails adapter, fixes #58
|
||
|
* Add threaded option to run server in threaded mode, calling the application in a
|
||
|
thread allowing for concurrency in the Rack adapter, closes #46
|
||
|
* Guess which adapter to use from directory (chdir option)
|
||
|
or use specified one in 'adapter' option, re #47.
|
||
|
|
||
|
== 0.7.1 Fancy Pants release
|
||
|
* Clean stale PID files when starting as daemon, fixes #53 [Chu Yeow]
|
||
|
* Require EventMachine 0.11.0 for UNIX domain sockets. Until it's released, install from:
|
||
|
gem install eventmachine --source http://code.macournoyer.com
|
||
|
* Ruby 1.8.5 compatibility, closes #49 [Wincent Colaiuta]
|
||
|
* Move all EventMachine stuff out of Server, you can now create a Thin Backend that
|
||
|
does not depend on EventMachine.
|
||
|
* Rename Connector to Backend. Extend Thin::Backends::Base to implement your own.
|
||
|
* Fix high memory usage with big POST body, fixes #48
|
||
|
|
||
|
== 0.7.0 Spherical Cow release
|
||
|
* Add --max-persistent-conns option to sets the maximum number of persistent connections.
|
||
|
Set to 0 to disable Keep-Alive.
|
||
|
* INT signal now force stop and QUIT signal gracefully stops.
|
||
|
* Warn when descriptors table size can't be set as high as expected.
|
||
|
* Eval Rackup config file using top level bindings.
|
||
|
* Remove daemons gem dependency on Windows plateform, fixes #45.
|
||
|
* Change default timeout from 60 to 30 seconds.
|
||
|
* Add --max-conns option to sets the maximum number of file or socket descriptors that
|
||
|
your process may open, defaults to 1024.
|
||
|
* Tail logfile when stopping and restarting a demonized server, fixes #26.
|
||
|
* Wrap application in a Rack::CommonLogger adapter in debug mode.
|
||
|
* --debug (-D) option no longer set $DEBUG so logging will be less verbose
|
||
|
and Ruby won't be too strict, fixes #36.
|
||
|
* Deprecate Server#silent in favour of Logging.silent.
|
||
|
* Persistent connection (keep-alive) support.
|
||
|
* Fix -s option not being included in generated config file, fixes #37.
|
||
|
* Add Swiftiply support. Use w/ the --swiftiply (-y) option in the thin script,
|
||
|
closes #28 [Alex MacCaw]
|
||
|
|
||
|
== 0.6.4 Sexy Lobster release
|
||
|
* Fix error when stopping server on UNIX domain socket, fixes #42
|
||
|
* Rescue errors in Connection#get_peername more gracefully, setting REMOTE_ADDR to nil, fixes #43
|
||
|
|
||
|
== 0.6.3 Ninja Cookie release
|
||
|
* Add tasks for Vlad the Deployer in example/vlad.rake [cnantais]
|
||
|
* Add Ramaze Rackup config file in example dir [tmm1]
|
||
|
Use like this from you Ramaze app dir:
|
||
|
|
||
|
thin start -r /path/to/thin/example/ramaze.ru
|
||
|
|
||
|
* Add the --rackup option to load a Rack config file instead of the Rails adapter.
|
||
|
So you can use any framework with the thin script and start cluster and stuff like that.
|
||
|
A Rack config file is one that is usable through the rackup command and looks like this:
|
||
|
|
||
|
use Rack::CommonLogger
|
||
|
run MyCrazyRackAdapter.new(:uterly, 'cool')
|
||
|
|
||
|
Then use it with thin like this:
|
||
|
|
||
|
thin start --rackup config.ru
|
||
|
|
||
|
* thin config --chrdir ... -C thin/yml do not change current directory anymore, fixes #33.
|
||
|
* Add a better sample god config file in example/thin.god that loads all info from config
|
||
|
files in /etc/thin. Drop-in replacement for the thin runlevel service [Gump].
|
||
|
* Add support for specifying a custom Connector to the server and add more doc about Server
|
||
|
configuration.
|
||
|
* Add a script to run thin as a runlevel service that can start at startup, closes #31 [Gump]
|
||
|
Setup the service like this:
|
||
|
|
||
|
sudo thin install /etc/thin
|
||
|
|
||
|
This will install the boot script under /etc/init.d/thin. Then copy your config files to
|
||
|
/etc/thin. Works only under Linux.
|
||
|
* Set process name to 'thin server (0.0.0.0:3000)' when running as a daemon, closes #32.
|
||
|
* Make sure chdir option from config file is used when present.
|
||
|
* Raise an error when starting a server as a daemon and pid file already exist, fixes #27.
|
||
|
|
||
|
== 0.6.2 Rambo release
|
||
|
* Server now let current connections finish before stopping, fixes #18
|
||
|
* Fix uploading hanging bug when body is moved to a tempfile,
|
||
|
also delete the tempfile properly upon completion, fixes #25
|
||
|
* 'thin restart' now sends HUP signals rather then stopping & starting, closes #17
|
||
|
* HUP signal now launches a new process with the same options.
|
||
|
* Add PID and more info from the last request to the Stats adapter
|
||
|
mostly taken from Rack::ShowException.
|
||
|
* pid and log files in cluster are no longer required to be relative to the
|
||
|
app directory (chdir option), fixes #24
|
||
|
* Revert to using #each when building response headers under Ruby 1.8,
|
||
|
solves an issue w/ Camping adapter, fixes #22
|
||
|
* Restructure thin script options in 3 sections: server, daemon and cluster
|
||
|
* Add --only (-o) option to control only one server of a cluster.
|
||
|
* Stylize stats page and make the url configurable from the thin script.
|
||
|
* Raise error if attempting to use unix sockets on windows.
|
||
|
* Add example config files for http://www.tildeslash.com/monit usage.
|
||
|
Include the example file using "include /path/to/thin/monit/file" in your monitrc file.
|
||
|
The group settings let you do this to manage your clusters:
|
||
|
|
||
|
sudo monit -g blog restart all
|
||
|
|
||
|
There are examples of thin listening on sockets and thin listening on unix sockets.
|
||
|
|
||
|
== 0.6.1 Cheesecake release
|
||
|
* Remove socket file when server stops.
|
||
|
* Set back cluster to use 'thin' command to launch servers.
|
||
|
|
||
|
== 0.6.0 Big Pony release
|
||
|
* Add support for connection through UNIX domain socket.
|
||
|
Use the --socket (-S) option w/ the thin script to configure the socket filename.
|
||
|
Nginx support binding to a UNIX socket like this:
|
||
|
|
||
|
upstream backend {
|
||
|
server unix:/tmp/thin.0.sock;
|
||
|
server unix:/tmp/thin.1.sock;
|
||
|
server unix:/tmp/thin.2.sock;
|
||
|
}
|
||
|
|
||
|
Start your servers like this:
|
||
|
|
||
|
thin start -s3 -S/tmp/thin.sock
|
||
|
|
||
|
* Remove Server#listen! method. Use Server#start instead.
|
||
|
* Server can now yield a Rack::Builder to allow building an app in one call:
|
||
|
|
||
|
Server.start '0.0.0.0', 3000 do
|
||
|
use Rack::CommonLogger
|
||
|
use Rack::ShowExceptions
|
||
|
map "/lobster" do
|
||
|
use Rack::Lint
|
||
|
run Rack::Lobster.new
|
||
|
end
|
||
|
end
|
||
|
|
||
|
* Add a very basic stats page through Stats adapter, load w/ --stats and browse to /stats.
|
||
|
* Add --trace (-V) option to trace request/response and get backtrace w/out all Ruby debug stuff.
|
||
|
* Add --config (-C) option to load options from a config file in thin script [Matt Todd].
|
||
|
* Alter response headers to output directly to a string.
|
||
|
* Improve specs stability.
|
||
|
* Move request body to a Tempfile if too big (> 112 MB)
|
||
|
* Remove useless check for max header size in Request (already done in the parser)
|
||
|
|
||
|
== 0.5.4 Flying Mustard release
|
||
|
* Don't read the full body, use direct streaming when sending response.
|
||
|
See: Response#each
|
||
|
As a result, the Content-Length can not be calculated anymore.
|
||
|
You have to do set this in your adapter. All frameworks do it anyway.
|
||
|
It improve memory usage and boost speed for low concurrency.
|
||
|
Thanks to Kent Sibilev and Ezra for their help on that one.
|
||
|
* Add 'Server' response header
|
||
|
* Fix --user and --group option not changing daemon process privileges
|
||
|
|
||
|
== 0.5.3 Purple Yogurt release
|
||
|
* win32 pre-compiled gem now available
|
||
|
* change rake task configuration to allow win32 gem build
|
||
|
* Add prefix option to thin script to mount app under a given path.
|
||
|
|
||
|
== 0.5.2 Cheezburger release
|
||
|
* Add cluster support through the -s option in the thin script, start 3 thins like this:
|
||
|
thin start -s3 -p3000
|
||
|
3 thin servers will be started on port 3000, 3001, 3002, also the port number will be
|
||
|
injected in the pid and log filenames.
|
||
|
* Fix IOError when writing to logger when starting server as a daemon.
|
||
|
* Really change directory when the -c option is specified.
|
||
|
* Add restart command to thin script.
|
||
|
* Fix typos in thin script usage message and expand chdir path.
|
||
|
* Rename thin script options to be the same as mongrel_rails script [thronedrk]:
|
||
|
-o --host => -a --address
|
||
|
--log-file => --log
|
||
|
--pid-file => --pid
|
||
|
--env => --environment
|
||
|
|
||
|
== 0.5.1 LOLCAT release
|
||
|
* Add URL rewriting to Rails adapter so that page caching works and / fetches index.html if present.
|
||
|
* Fix bug in multiline response header parsing.
|
||
|
* Add specs for the Rails adapter.
|
||
|
* Fix Set-Cookie headers in Rails adapter to handle multiple values correctly.
|
||
|
* Fix Ruby 1.9 incompatibility in Response#headers= and Rakefile.
|
||
|
* Fix parser to be Ruby 1.9 compatible [Aman Gupta]
|
||
|
* Set gemspec to use EventMachine version 0.8.1 as it's the latest one having precompiled windows binaries.
|
||
|
[Francis Cianfrocca].
|
||
|
* Add -D option to thin script to set debugging on.
|
||
|
* Output incoming data and response when debugging is on.
|
||
|
|
||
|
== 0.5.0
|
||
|
* Full rewrite to use EventMachine, Rack and Mongrel parser
|
||
|
|
||
|
== 0.4.1
|
||
|
* Fix Rails environment option not being used in thin script.
|
||
|
|
||
|
== 0.4.0
|
||
|
* First alphaish release as a gem.
|