ruby-on-rails - 如何访问 Rails 中的原始请求并稍后在 Rails 中重新实例化该请求?

标签 ruby-on-rails http

我想在文件上传转换为临时文件之前访问请求对象并将其添加到稍后处理的队列中,主要是因为IO对象无法编码(marshal)或序列化。我怎样才能做到这一点?

我还需要稍后“重做”请求。我应该在 Rails 请求生命周期的哪个点进行此操作?

最佳答案

代码示例,在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

关于ruby-on-rails - 如何访问 Rails 中的原始请求并稍后在 Rails 中重新实例化该请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10800060/

相关文章:

linux - 无法访问 apache http 服务器上的 .mov 文件

angularjs - Angular $http 状态 (-1)

ruby-on-rails - Date.today 与实际日期不对应

ruby-on-rails - 如何将我的 Rails 设备登录/注册添加到 React Native 应用程序?

php - Delphi IdHTTP.get 和 PHP file_get_contents 显示相同 URL 的不同文本

api - 如何在 Alphavantage 的 URL 中使用带有 "."的符号?

java - 如果我在创建对象时已经打开连接,是否需要执行 HTTPUrlConnection.connect() ?

javascript - 使用 ISO V2 Coated 等颜色配置文件将 CMYK 颜色转换为 RGB?

ruby-on-rails - Mongoid 无限循环查询

ruby-on-rails - 使用 rspec 测试页面浏览计数器