【发布时间】:2015-06-27 15:59:23
【问题描述】:
我有一个 Rails 4.2 应用程序,文件上传流量很大。
我想覆盖rack.multipart.tempfile_factory,以便在接受文件上传时提供与 Rack 在后台创建的临时文件相关的其他行为。
那么我在哪里以及如何更改 Rack 的 env 哈希确切地?尝试在初始化程序中执行env['...'] = ...,说env 未定义。将其更改为 ENV 会引发错误,指出它无法将 lambda 转换为字符串(rack.multipart.tempfile_factory 需要 lambda,因此我不能将其更改为字符串)。在控制器方法中使用request.env 没有任何效果。我通过复制粘贴库存机架工厂的一行代码来测试最后一个,并将随机数添加到具有固定路径的文件中;上传几个文件后,该文件一开始就没有被创建,所以你去吧。
我正在寻找官方解决方案,并且无意对 Rack 进行猴子补丁。它的规范表明这是可能的,那么我应该怎么做呢?
当然,如果一切都失败了,我会求助于黑客,但我更愿意先听听官方的做法。
(虽然我们在这里,您能否推荐一个无宝石的解决方案来覆盖rack.hijack_io,并提供一些真实世界的示例?特别是搜索那个东西并不是很有帮助,似乎没有人提供端到端的工作解决方案,只有零碎)。
感谢您的考虑。
【问题讨论】:
标签: ruby ruby-on-rails-4 file-upload rack