【问题标题】:Rails Assets, possible to have pre-compiled and non-compiled in production mode?Rails Assets,可以在生产模式下预编译和非编译吗?
【发布时间】:2020-03-16 11:30:11
【问题描述】:

Rails 6 应用程序,生产模式。

情况是这样的,我有许多将在视图中引用的图像文件。

有些我已经提前准备好了,我可以在生产中使用应用程序预编译和部署这些图像资产。那里没有问题。

但是,应用程序在部署和运行时会不时以临时方式从远程源导入更多图像,这些图像也将在视图中被引用。

所以看起来我会混合使用预编译和未编译的图像……感觉不对。

我想我根本无法预编译,然后设置

config.assets.compile = true

但 rails 文档指出不建议在生产模式下这样做。

我确定我不是第一个尝试做这种事情的人,我想知道我是否忽略了一个久经考验的解决方案?

有什么想法吗?提前致谢。

【问题讨论】:

  • 您可能希望将图像存储在像 S3 这样的提供程序上。

标签: image asset-pipeline ruby-on-rails-6


【解决方案1】:

如果图像是在运行时获取或编译的,则它们不属于资产管道。管道的重点是简化部署和开发过程,以便在部署时自动编译/优化资产。资产是开发人员关注的 CSS、JS 和图像等文件。

AFAIK Rails 不可能同时使用这两种模式,也不可取,因为它会在生产中增加大量开销。

如 cmets 中所述,这些图像应与资产管道分开存储,最好存储在针对 S3 等文件交付优化的云平台中,而不是在您的 Rails 应用程序中。您的应用应该只存储这些文件的 URL。

在处理用户文件上传和从远程源导入的方式之间没有重大区别,只是源略有不同。 ActiveStorage 和 CarrierWave 等库可以在导入图像时在运行时进行图像转换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 2013-05-08
    相关资源
    最近更新 更多