Итак, я выяснил, в чем заключается проблема, когда мое назначение потребовало от меня использования файла SQL с 180 000 операторов вставки, поэтому это заняло так много времени. Мне пришлось вручную изменить их, чтобы они были только одним оператором вставки с несколькими значениями.
Created a solution that worked for me (worked very well) - this example getting a range offset:
require 'uri'
require 'net/http'
size = 1000 #the last offset (for the range header)
uri = URI("http://localhost:80/index.html")
http = Net::HTTP.new(uri.host, uri.port)
headers = {
'Range' => "bytes=#{size}-"
}
path = uri.path.empty? ? "/" : uri.path
#test to ensure that the request will be valid - first get the head
code = http.head(path, headers).code.to_i
if (code >= 200 && code < 300) then
#the data is available...
http.get(uri.path, headers) do |chunk|
#provided the data is good, print it...
print chunk unless chunk =~ />416.+Range/
end
end
Если у Вас есть доступ к журналам сервера, попытайтесь сравнить запрос от браузера с тем от Ruby и посмотрите, говорит ли это Вам что-нибудь. Если это не практично, разожгите Webrick как насмешку для файлового сервера. Не волнуйте по поводу результатов, просто сравнивайте запросы для наблюдения то, что они делают по-другому.
Что касается стиля Ruby, Вы могли переместить встроенные заголовки, как так:
httpcall = Net::HTTP.new(@address, @port)
resp, data = httpcall.get2(@path, 'Range' => 'bytes=1000-')
кроме того, обратите внимание, что в Ruby 1.8 +, что Вы почти наверняка выполняете, Net::HTTP#get2
возвраты сингл HTTPResponse
объект, не resp, data
пара.