From: Eric Wong <firstname.lastname@example.org> To: Kevin Mullican <email@example.com> Cc: firstname.lastname@example.org Subject: Re: issue between rainbows/unicorn 5.0.0 and rack on ruby >= 1.9.1 Date: Wed, 13 Jul 2016 20:24:31 +0000 Message-ID: <20160713202431.GA10605@dcvr.yhbt.net> (raw) In-Reply-To: <CAKFTmUxbcbnvwc4S5N9mHGnqE+sqNofVGdy75SHjUy0nDj_pUA@mail.gmail.com> Kevin Mullican <email@example.com> wrote: > Greetings, > > We have run into a problem while trying to use rainbows/unicorn 5.0.0 > on ruby >= 1.9.1. The issue is with rack. As of ruby 1.9.1, String no > longer responds to #each, however it seems that rainbows is still > sending a string body through rack. See: > > rainbows-5.0.0/lib/rainbows/process_client.rb:51: in `write_response` > > which enters rack at: > > rainbows-5.0.0/lib/rainbows/response.rb:85:in `write_body_each' That is all correct. > Note that the rack spec specifically requires that body respond to > #each and yield a set of strings: > > https://github.com/rack/rack/blob/25a549883b85fb33970b4a1530a365c0c9e51f95/SPEC#L245-L248 Also correct. > So, it seems that the onus is likely on rainbows to conform to the > rack spec in order to require it's use. One solution would be to wrap > the bare string in an array before it descends into rack. Actually, I believe the onus is on the application to produce a correct response body for the application server to use. Testing your application with the Rack::Lint middleware enabled should've detected such an error. Application frameworks (e.g. Sinatra, Rails, etc) already produce a response body which responds to #each out-of-the-box. A brief scan of lib/rack/handlers/*.rb in rack.git reveals the server handlers bundled with rack itself expect the body to respond to #each, too.
next prev parent reply index Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-07-13 19:51 Kevin Mullican 2016-07-13 20:24 ` Eric Wong [this message] 2016-07-14 16:13 ` Dan Kegel 2016-07-14 22:17 ` Eric Wong
Reply instructions: You may reply publically to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style List information: https://yhbt.net/rainbows/ * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20160713202431.GA10605@dcvr.yhbt.net \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Rainbows! Rack HTTP server user/dev discussion Archives are clonable: git clone --mirror https://yhbt.net/rainbows-public git clone --mirror http://ou63pmih66umazou.onion/rainbows-public Example config snippet for mirrors Newsgroups are available over NNTP: nntp://news.public-inbox.org/inbox.comp.lang.ruby.rainbows nntp://ou63pmih66umazou.onion/inbox.comp.lang.ruby.rainbows note: .onion URLs require Tor: https://www.torproject.org/ AGPL code for this site: git clone https://public-inbox.org/public-inbox.git