2012-09-12 10 views
8

के माध्यम से यूटीएफ -8 पोस्ट करते समय मुझे उसकेोकू पर अजीब बग मिला है। इसे पुन: पेश करने के लिए मुझे अनुरोध निकाय में किसी भी यूटीएफ -8 अक्षरों के साथ बड़ा (कुछ केबी से अधिक) HTTPS पोस्ट करना होगा। यहाँ एक उदाहरण है:'EOFError: फ़ाइल का अंत पहुंच गया' HEROKU पर एसटीएल

require "net/https" 
require "uri" 

#Accutally I've ecountered this bug while posting to another server 
url = URI.parse("https://api.heroku.com/myapps") 

#It's Ukrainian 'oiced velar plosive G' letter 
payload = "ґ"*10000 
request = Net::HTTP::Post.new(url.path) 
request.body = payload 
http = Net::HTTP.new(url.host, url.port) 
http.use_ssl = true 
http.read_timeout = 500 
http.start {|http| http.request request } 

स्थानीय मशीन के आईआरबी पर इस तरह के स्क्रिप्ट चल रही है मुझे देता है:

#<Net::HTTPUnauthorized 401 Unauthorized readbody=true> 

... जो की उम्मीद है, लेकिन Heroku देवदार पर, पर 'Heroku सांत्वना' यह runing .. लगभग 60sec में मुझे मिलता है:

EOFError: end of file reached 
    from /usr/local/lib/ruby/1.9.1/openssl/buffering.rb:145:in `sysread_nonblock' 
    from /usr/local/lib/ruby/1.9.1/openssl/buffering.rb:145:in `read_nonblock' 
    from /usr/local/lib/ruby/1.9.1/net/protocol.rb:135:in `rbuf_fill' 
    from /usr/local/lib/ruby/1.9.1/net/protocol.rb:116:in `readuntil' 
    from /usr/local/lib/ruby/1.9.1/net/protocol.rb:126:in `readline' 
    from /usr/local/lib/ruby/1.9.1/net/http.rb:2219:in `read_status_line' 
    from /usr/local/lib/ruby/1.9.1/net/http.rb:2208:in `read_new' 
    from /usr/local/lib/ruby/1.9.1/net/http.rb:1191:in `transport_request' 
    from /usr/local/lib/ruby/1.9.1/net/http.rb:1177:in `request' 
    from (irb):32:in `block in irb_binding' 
    from /usr/local/lib/ruby/1.9.1/net/http.rb:627:in `start' 
    from (irb):32 
    from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.7/lib/rails/commands/console.rb:47:in `start' 
    from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.7/lib/rails/commands/console.rb:8:in `start' 
    from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.7/lib/rails/commands.rb:41:in `<top (required)>' 

मुझे इसके साथ क्या करना चाहिए?

उत्तर

3

मैं Gemfile में गहरे लाल रंग का संस्करण जोड़ने के लिए किया था, के रूप में डिफ़ॉल्ट देवदार के माणिक 1.9.2 है (जो है बग गुजर UTF-8 SSL पर तार)

source 'https://rubygems.org' 
ruby "1.9.3" 

gem 'rails', '3.2.7' 
gem 'pg' 
... 
2

मुझे लगता है, इस करना चाहिए काम करता है:

require "net/https" 
require "uri" 

url = URI.parse("https://api.heroku.com/myapps") 
#It's Ukrainian letter 'soft-G' 
payload = "ґ"*10000 
request = Net::HTTP::Post.new(url.path) 
request.basic_auth 'youremail', 'yourpassword' 
request.body = URI.encode(payload) 
http = Net::HTTP.new(url.host, url.port) 
http.use_ssl = true 
http.read_timeout = 500 
http.start {|http| http.request request }