【发布时间】:2017-02-21 17:54:46
【问题描述】:
我正在构建一个通过 CarrierWave 处理文件上传的 Rails 应用程序。目前,较大的文件上传会在很长一段时间内阻塞服务器。我见过像 s3-swf-upload-plugin gem 这样的解决方案,它跳过本地服务器并将文件直接从浏览器发送到 S3,但这需要进行一些修改以预先生成唯一的文件名并将它们与数据库同步。我相信这不会太麻烦,但是 Heroku 的新 Cedar 堆栈让我想到了将这些长时间运行的请求卸载到在同一应用程序中运行的 node.js 实例。我对这类事情不是很有经验,所以如果我的措辞有点不对劲,请原谅我。
这样的事情可能吗?您将如何配置某些请求(在本例中为涉及文件上传的请求)将由捆绑在与主 rails 应用程序相同的 heroku 存储库中的节点应用程序处理?
【问题讨论】:
-
您是否考虑过为上传文件运行单独的 heroku 应用程序?
-
即使它们在不同的实例上,我认为问题仍然适用于如何将它们集成在一起。另外,我不确定如何在两个单独的 heroku 应用程序之间共享数据库。
-
您可以从 ENV['DATABASE_URL'] 获取数据库连接字符串,您应该可以在第二个应用程序上使用它。事实上,使用专用数据库,您甚至可以从 heroku 之外的应用程序访问它:devcenter.heroku.com/articles/external-database-access
-
很高兴知道,但大部分问题是关于无缝集成两个独立应用程序的最佳方式。您是否只需将 rails 应用程序中的表单设置为发布到节点应用程序,让节点应用程序开始处理上传并同时重定向回 rails 应用程序?您将如何处理在两者之间传递操作状态?
-
是的。我把它总结为一个完整的答案。
标签: ruby-on-rails node.js heroku