我正在尝试从Activestorage打开图像URL,但是ruby睡着了,控制台日志中的最后一项是:
Started GET "/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBCdz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--bfec3dc0d0745e49d7daa9faac7abdeaa46418c3/f2392748480.png" for 127.0.0.1 at 2018-12-02 14:45:01 -0600
,结束时错误为:Net::ReadTimeout
这不是第一次发生,但之后每次我运行该方法时都会发生。
我的方法:
def upload_photos
require 'open-uri'
page_api = Koala::Facebook::API.new(params[:access_token])
image_urls = params[:images].map do |image|
open("#{request.protocol}#{request.host_with_port}#{image[:url]}") do |f|
page_api.put_picture(f, f.content_type, { "caption" => image[:filename] }, params[:id])
end
end
render json: { image_urls: image_urls, album_id: params }
end
它是第一次工作,但此后不会工作。
更新:此方法适用于外部URL,但不适用于活动存储
这是因为Ruby正在忙于打开文件,并且当尝试到达URL时由于正在打开文件而无法响应该请愿,就像试图在镜子中观察自己的后脑勺一样。