Ruby on rails Rails-临时映像文件存储和使用选项

Ruby on rails Rails-临时映像文件存储和使用选项,ruby-on-rails,ruby,file,storage,temporary,Ruby On Rails,Ruby,File,Storage,Temporary,我一直在研究在Rails生产环境中生成、存储和引用临时映像文件的最佳方法——运行在Heroku 18堆栈上的Rails 5.2和Ruby 2.4 此应用程序生成的图像文件只需在几个小时内可用/缓存。我不确定使用/assets文件系统的cpu和I/o密集程度如何,但我希望有一种更有效的方法来生成、存储和引用映像 以下是当前的原型应用程序系统,它生成一个PNG文件,将其存储在/assets/images中,然后使用image_标记引用该文件: PNG文件生成并存储在文件系统中: @barcode =

我一直在研究在Rails生产环境中生成、存储和引用临时映像文件的最佳方法——运行在Heroku 18堆栈上的Rails 5.2和Ruby 2.4

此应用程序生成的图像文件只需在几个小时内可用/缓存。我不确定使用/assets文件系统的cpu和I/o密集程度如何,但我希望有一种更有效的方法来生成、存储和引用映像

以下是当前的原型应用程序系统,它生成一个PNG文件,将其存储在/assets/images中,然后使用image_标记引用该文件:

PNG文件生成并存储在文件系统中:

@barcode = Barby::Code128B.new(@variant.sku)
@blob = Barby::PngOutputter.new(@barcode).to_png

path = Rails.root.join("app", "assets", "images", "#{@variant.sku}.png")
File.open(path, 'wb') {|f| f.write @blob }
在视图中引用PNG文件:

<%= image_tag "#{@variant.sku}.png" %>


活动存储似乎不是正确的方法,因为它是用于用户上传的。我曾考虑过使用低级缓存进行存储,但也存在从视图中轻松引用PNG图像的问题。我正在寻找一些关于为生产应用程序实现这种“临时”文件存储系统的最有效、最恰当的方法的建议和想法。谢谢大家!

对我来说,活动存储看起来不错。它设计用于处理文件。您需要保存文件。多久都不重要。你可以稍后用cron、sidekiq或smtn删除你的“临时”文件,就像这样。我同意,ActiveStorage是更好的选择。特别是因为如果你将该文件存储在一个Heroku Dyno上,它将无法在其他Dyno上使用,并且它将在Dyno重新启动时消失(发生的频率比你想象的要高)。我建议你读一读。这是一种选择吗?