我想在文件上傳被轉換爲臨時文件之前訪問請求對象,並將其添加到稍後處理的隊列中,這主要是因爲IO對象無法封送或序列化。我怎樣才能做到這一點?如何在rails中訪問原始請求並在稍後使用rails重新實例化請求?
我還需要稍後「重做」請求。在軌道請求生命週期的哪一點,我會鉤住這樣做?
我想在文件上傳被轉換爲臨時文件之前訪問請求對象,並將其添加到稍後處理的隊列中,這主要是因爲IO對象無法封送或序列化。我怎樣才能做到這一點?如何在rails中訪問原始請求並在稍後使用rails重新實例化請求?
我還需要稍後「重做」請求。在軌道請求生命週期的哪一點,我會鉤住這樣做?
那麼,只要做到這一點,你不要做那樣複雜的事情。
如果你想在後臺進程中上傳,你可以簡單地使用delayed_paperclip。這個寶石使用delayed_job和進程上傳,調整大小,發送到S3(如果你想)在後臺進程。
代碼示例,在routes.rb中:
post 'incoming_email' => Proc.new { |env|
RequestCache.create!(
data: env['rack.input'].read,
content_type: env['CONTENT_TYPE'],
content_length: env['CONTENT_LENGTH']
)
[200, {'Content-Type' => 'text/plain'}, ['OK']]
}
,並在模型中:
class RequestCache < ActiveRecord::Base
attr_accessible :data, :content_length, :content_type
def params
Rack::Request.new({
'rack.input' => StringIO.new(data),
'CONTENT_LENGTH' => content_length,
'CONTENT_TYPE' => content_type
}).POST
end
end
上傳nginx的/阿帕奇如果部署了妥善處理。所以我建議讀取文件和序列化/編組內容。所以與價值工作。我認爲你想要做什麼有更簡單的解決方案。 –