Date | Commit message (Collapse) |
|
The optional C extension no longer tries to preserve the
original response array as it could become subtly broken by
people using non-frozen but constant responses. For the pure
Ruby version, there is a 1.9-encoding bugfix for response
size calculation.
|
|
hacking the C extension with RSTRING_LEN() is so much easier :P
|
|
instance variable lookups are expensive as-is
|
|
|
|
|
|
A bare "File" constant may conflict with Rack::File
when run inside Rack::Builder
|
|
It's too crazy to have to special case for frozen response
constants. 3-element arrays are cheap under Ruby 1.9 anyways.
|
|
|
|
Also uppercase rake/ruby variables
|
|
This release should help ensure compatibility with a
to-be-released version of Rack::Lint that allows subclasses of
the core String and Hash objects for users of the optional C
extension.
Eric Wong (6):
ext: convert non-Hashes #to_hash if possible
ext: ensure all objects we byte_xs are Strings
tests for subclassing
gemspec: disable the license= field for older RubyGems
GNUmakefile: fix grammar FAIL in comment
cleanup packaging and website/rdoc
|
|
|
|
|
|
|
|
Rack::Lint will be relaxed in the next version to allow
subclasses of String and Hash objects, so ensure we're
good to go when the next version of Rack hits.
|
|
Rack will be relaxing the spec to allow subclasses
of String objects. Just in case they're not compatible,
we'll convert them to strings.
|
|
This is to remain compatible with Rack if it relaxes
Rack::Lint to allow subclasses.
|
|
We now properly handle bodies that do not respond to the :close
method. Additionally there small documentation/formatting
fixes.
|
|
Since the wrapped Clogger object always responds to
close, we cannot blindly delegate the close method to
the body without ensuring it can be closed. So ensure
that it can be closed before attempting to close it,
all return values and errors are trapped and returned.
Reported-by: Iñaki Baz Castillo
|
|
|
|
Hopefully it was obvious before, if not it is now.
|
|
escaping issues are too painful to deal with
|
|
|
|
Odd, RubyGems doesn't warn about a lack of it and
I didn't notice this field until now...
|
|
|
|
"clogger_ext" is no longer a separate gem, but merged into the
"clogger" gem itself. The installation should automatically
detect compatible versions of Ruby and only build the C
extension for MRI 1.8/1.9.
Rack::Utils::HeaderHash is now used for $sent_http_* variable
lookups instead of a hand-rolled solution. HeaderHash objects
should be reusable in Rack soon to avoid the penalty of
recreating them repeatedly in middlewares and hopefully
more-widely used as a result.
Underlying logger objects are sync=true for safety reasons.
This has always been the case for the C extension version
when writing to regular files.
Other small changes include more CGI variables and the :ORS
(output record separator) option added (default: "\n").
|
|
|
|
It's expensive to create if not needed, and no current released
version of Rack has my proposed optimizations for it yet...
|
|
|
|
|
|
It was too much confusion to have multiple gems in the mix
and I mainly use the C extension anyways.
If we're not on a compatible version of Ruby, the extension will
just be disabled by generating a dummy no-op Makefile to work
around it.
|
|
Several bikeshed reasons brought me to this point:
* I like the README.html layout more than any default index.html
even if it's using README content. Having links on the side
helps navigation IMHO.
* publish_docs preserves timestamps to improve cache hit rate
* git is used to maintain the manifest at packaging/release-time
so my changesets have less noise in them
* git is used to generate history files (from tag messages),
this is a more DRY approach to me.
* I don't like the ".txt" suffix being translated to "_txt.html" in
URLs. I don't like the ".txt" suffix in general.
* I don't like Manifest.txt showing up in my RDoc
|
|
TODO: find a better way to do this...
|
|
Otherwise modify the response array in place since
most frameworks give you a modifiable array for you
to play with anyways.
|
|
No point in having extra code to do case-insensitive lookups,
especially since the HeaderHash implementation is already in
wide use and will only get faster as time goes by.
|
|
Avoid calling RARRAY_PTR all over the place and make the code
easier to read/audit as a result.
|
|
s/init_bad_response/init_bad_app_response/
The new name matches the variable it initializes more closely.
|
|
$auth_type, $gateway_interface, $server_software,
$path_translated are all supported now.
|
|
This allows overriding the default of "\n". Behavior remains
similar to IO#puts, the :ORS (output record separator) is
appended iff the format doesn't already end with that string.
|
|
This is useful for testing the pure Ruby version in case
clogger_ext is already installed on your system.
|
|
Userspace buffering defaults are dangerous as the Ruby default
IO objects do not do line-aware buffering. This makes the
README examples with File.open much safer to use out-of-the-box
for users of the pure-Ruby version. For users on the MRI C
extension logging to regular files, this should not have any
effect as we've optimized those to do unbuffered write(2)
syscalls anyways.
|
|
|
|
* link to Clogger::Format when talking about predefined formats
* use upper-case for escape chars since that's what we use
* clarify $request_time{PRECISION} range
|
|
Since Rack doesn't allow the HTTP_CONTENT_{LENGTH,TYPE} headers,
alias attempts to use those to the non-"HTTP_"-prefixed
equivalents to avoid confusion on the user side (nginx also does
this).
|
|
Since the HTTP_CONTENT_LENGTH and HTTP_CONTENT_TYPE variables
are not allowed by Rack, we need to allow access to the CGI
variables instead.
|
|
Accessing "REQUEST_METHOD" in the Rack env should be doable as a
CGI-ish variable. Thanks to Iñaki Baz Castillo for spotting the
issue and reporting it to me.
|
|
|
|
Back in HTTP/0.9 days (before it was called HTTP/0.9),
"GET /uri/goes/here\r\n" was a valid HTTP request.
See rfc 1945, section 4.1 for details on this ancient
"Simple-Request" scheme used by HTTP/0.9 clients.
|
|
The rubyforge one is out-of-date right now, so lets stop
referencing it until the issues around it can be fixed.
|
|
I seem to have problems pushing to Rubyforge at the moment, so
I'll put the repository on a host I have more control over.
Tracking the issue here:
http://rubyforge.org/tracker/index.php?func=detail&aid=26185&group_id=5&atid=102
|
|
The pure variant was using lower-case output instead
of upper case, the ext variant was actually fine in this
case. This is for nginx output format compatibility.
|