ruby-on-rails - 如何使用sidekiq worker访问Dokku服务器上rails应用程序中上传的文件

标签 ruby-on-rails file-upload sidekiq dokku

我正在使用 sidekiq 插件:
https://github.com/bigboxsoftware/dokku-sidekiq在服务器上启用 sidekiq。问题是工作人员无法访问任何应用程序文件夹中的文件。

正如插件自述文件所说

Adds a post-deploy hook to Dokku to automatically deploy a container running a Sidekiq worker

我不确定这是否意味着我的应用程序和 sidekiq 在不同的容器中运行?
我曾尝试使用挂载文件夹来存储上传的文件
cat /home/dokku/home/PERSISTENT_STORAGE
/home/dokku/shared/temp:/app/public/temp

但它仍然无法工作。

在 rails 控制台中,我可以使用 File.open('public/temp/file')打开文件,但一旦使用 Sidekiq::Worker.new('public/temp/file') ,它引发 Errno::ENOENT: No such file or directory错误。

我现在能做什么?

最佳答案

在这种情况下,Sidekiq 正在运行它自己的服务器(容器),从而使其与应用程序服务器进行沙箱化(即可能会或可能不会在相同的物理硬件上运行)。
在您想在应用程序服务器和 sidekiq 之间“共享”任何内容的情况下,您需要与数据库/数据存储共享。这可能是 S3、Redis、Postgres 或 sidekiq 作业本身的参数。
我已经将所有这些用于不同的目的。

关于ruby-on-rails - 如何使用sidekiq worker访问Dokku服务器上rails应用程序中上传的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30886189/

相关文章:

ruby - sidekiq - 并发 > 50 稳定吗?

ruby-on-rails - 安排后台作业而不重复

ruby-on-rails - 从 ActiveRecord has_many 关联中提取唯一值

ruby-on-rails - 如何在 Active Storage 测试中 stub 文件大小? (测试::单位)

ruby-on-rails - localhost 应用程序的公共(public) URL,用于 Facebook

ruby-on-rails - 使用 JS 响应 iframe 文件上传

file-upload - Symfony 4 Form文件上传字段不显示带有Bootstrap 4主题的选定文件名

javascript - rails : Delete nested attribute while updating entry

asp.net - 防止在 ASP.NET 4.0 中上传大文件

ruby-on-rails - 在 Rails 应用程序中异步执行存储过程