我最近在我的投资组合网站上为我的博客添加了富文本功能,其中大部分功能都很好(我遵循了GoRails教程,因为懒惰)。
我面临的问题是,图像上传在开发中有效,而在生产中无效。
我正在使用Active-storage rails指南上详细说明的S3 bucket,通过Heroku托管上述生产组合。我有理由怀疑CORS错误,但我似乎无法修复它。我怀疑这是因为在开发过程中发生了同样的错误,直到我修改了CORS权限。然而,我可能是错的,因为我对Rails(7)非常陌生。
下面是尽可能多的细节,我可以认为添加,详细说明问题。
S3 CORS权限:
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"PUT"
],
"AllowedOrigins": [
"http://127.0.0.1:3000",
"http://localhost:3000",
"https://jpgiodevelopments.com",
"https://www.jpgiodevelopments.com",
"https://my-rorportfolio.herokuapp.com"
],
"ExposeHeaders": [
"Origin",
"Content-Type",
"Content-MD5",
"Content-Disposition"
],
"MaxAgeSeconds": 3600
}
]
Storage.yml
test:
service: Disk
root: <%= Rails.root.join("tmp/storage") %>
local:
service: Disk
root: <%= Rails.root.join("storage") %>
# Use bin/rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
amazon:
service: S3
access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
region: eu-north-1
bucket: rorportbucket
public: true
HEROKU日志(V长)
[
网页错误
请放心,我已经在production.rb和development.rb中包含了以下内容:
config.active_storage.service = :amazon
我所尝试的...
1.在开发环境中也遇到了同样的问题,我在S3 Bucket中的CORS权限上花了很大力气,但与开发环境不同,这个权限似乎不起作用,我在生产组合的头部中交叉检查了来源,但我不能100%确定,因为CORS对我来说是全新的(实际上web-dev也是如此:/)
**我期望:**对于活动存储直接上传工作,在我的S3存储桶上查看它,并且我的博客应用程序将上传存储在博客文章中。不幸的是,这并没有发生,就像它在开发环境中一样。
2.查了一下,我确保尽可能地将所有依赖项添加到我的Heroku应用中。我想既然它引发了一个blob错误,并且vips是过去的依赖问题,我会覆盖所有(已知)基础并安装所有我能想到的。这包括运行以下内容:
Rails db:migrate
Rails active_storage:install
以及通过Aptfile构建包安装vips;
libglib2.0-0
libglib2.0-dev
libpoppler-glib8
并通过以下方式将其添加到生产和开发环境中
Rails.application.config.active_storage.variant_processor = :vips
**我期望:**对于活动存储直接上传工作,查看它在我的S3桶和我的博客应用程序有一个上传存储在博客文章作为博客创建被修复的结果.尽管验证安装的贵宾,什么都没有发生哈哈!
1条答案
按热度按时间qpgpyjmq1#
**修复被发现!**这是使用凭据.dig与正确键入的密钥和一个新的良好设置的s3桶.我转移到使用Heroku ENV配置变量.配置变量没有工作,因为他们在那里采取太字面的
access_key_id = ENV['EXAMPLE_KEY_ID']
而不是'access_key_id = example actual key
'.我切换到凭据.dig和重新键入一切,包括设置和新的桶,嘿,突然!原来这只是愚蠢的CORS设置哈哈!