ruby-on-rails - 如何让 Rails 5 上的 avatar.variant(size: "200x200") 在生产中使用 aws 工作?
问题描述
在生产中使用云提供商时,我无法让 user.avatar.variant(resize: "200x200") 工作,因为它使用我的网站路径而不是 aws。
<%= image_tag user.avatar.variant(resize: "200x200") %>
# Current Output
<img src="https://mywebsite.com/rails/active_storage/representations/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBCdz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--3f8b21aebb9ca4fc9fe9043a1acc3e77e999319a/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdCam9MY21WemFYcGxTU0lLTVRCNE1UQUdPZ1pGVkE9PSIsImV4cCI6bnVsbCwicHVyIjoidmFyaWF0aW9uIn19--6b94a1495d331d40bee31fadf0e8dc9323a7e1bc/image.jpg">
# Should be
<img src="aws.com/img.jpg">
我需要 user.avatar.service_url.split("?").first 来获得 img 的正确路径,但是当我这样做时,我不能使用 .variant() 因为该路径是一个字符串。
# this works but can't resize
<%= image_tag user.avatar.service_url.split("?").first %>
知道我是如何克服这个问题的。
谢谢!
解决方案
我从 gorails.com 的 Chris Oliver 那里得到了这个答案:
“ActiveStorage URL 总是通过你的 Rails 应用程序。这就是他们如何在不预先计算的情况下即时生成调整大小的 200x200。这是现在使用 ActiveStorage 的主要缺点。
在 Rails 的未来版本中,他们将可以选择使用 AWS 的直接 URL,但您现在不能这样做。
如果你今天想要这个功能,你最好使用 Shrine 来上传文件。”
我认为这很有用,这就是我决定在这里分享它的原因。
推荐阅读
- ssl - 从 .cer 和 pfx 的密码生成 pfx
- ios - UICollectionViewController 未注册创建的自定义单元类
- python - 如何在 python-docx 中同时应用粗体和居中?
- sql - 使用不包含的 Active Record Join 获取嵌套对象
- android - android - 如何使用 LiveData 和 RxJava 处理错误?
- reactjs - 404 未找到:protobufjs@^5.0.0
- android - 如何在 android 上更改系统视图图标/样式、功能?
- c# - 当元素不存在时,使用 Selenium (C#) 的 IF ELSE 条件
- apache - 如何使用 Apache 在我的 URL 中隐藏 IP 和端口?
- java - 二进制代码上的约束计数集