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

Per*_*ior 6 file-upload ruby-on-rails sidekiq dokku

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

正如插件README所说

Adds a post-deploy hook to Dokku to automatically deploy a container running a Sidekiq worker
Run Code Online (Sandbox Code Playgroud)

我不确定这意味着我的应用程序和sidekiq在不同的容器中运行?我试图使用挂载文件夹来存储上传的文件

cat /home/dokku/home/PERSISTENT_STORAGE
/home/dokku/shared/temp:/app/public/temp
Run Code Online (Sandbox Code Playgroud)

但它仍然无法奏效.

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

我现在能做什么?

nor*_*ort 0

在这种情况下,Sidekiq 正在运行它自己的服务器(容器),从而使其与应用程序服务器隔离(即可能或可能不在相同的物理硬件上运行)。

当您想要在应用程序服务器和 sidekiq 之间“共享”任何内容时,您需要与数据库/数据存储共享。这可能是 S3、Redis、Postgres 或 sidekiq 作业本身的参数。

我已经将所有这些用于不同目的的生产中。