File.read 开发中资产的优雅方式
elegant way to File.read assets in development
我有以下代码
module EmailHelper
def email_image_tag(image, **options)
attachments.inline[image] = File.read(image_path(image))
image_tag attachments[image].url, **options
end
end
在生产中,这会引用带有哈希的正确图像,因为图像资产是预编译的,但是在开发中,这会引发文件读取异常。
有没有一种优雅的方法来执行 File.read 而无需检查是否 Rails.env.development?
这里最大的误解是我认为我应该指向一个摘要资产,忘记了这些资产是用来提供的而不是作为文件读取的。因此,该文件可以完美地从资产地图中加载。我解决了上面的问题如下:
module MailHelper
def mail_image_tag(image, **options)
path = Rails.root.join('app', 'assets', 'images', image)
attachments.inline[image] = File.read(path)
image_tag attachments[image].url, **options
end
end
我有以下代码
module EmailHelper
def email_image_tag(image, **options)
attachments.inline[image] = File.read(image_path(image))
image_tag attachments[image].url, **options
end
end
在生产中,这会引用带有哈希的正确图像,因为图像资产是预编译的,但是在开发中,这会引发文件读取异常。
有没有一种优雅的方法来执行 File.read 而无需检查是否 Rails.env.development?
这里最大的误解是我认为我应该指向一个摘要资产,忘记了这些资产是用来提供的而不是作为文件读取的。因此,该文件可以完美地从资产地图中加载。我解决了上面的问题如下:
module MailHelper
def mail_image_tag(image, **options)
path = Rails.root.join('app', 'assets', 'images', image)
attachments.inline[image] = File.read(path)
image_tag attachments[image].url, **options
end
end