Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为生产模式重新填充S3后端,为开发模式重新填充文件后端_Ruby On Rails_Amazon S3_Refile - Fatal编程技术网

Ruby on rails 为生产模式重新填充S3后端,为开发模式重新填充文件后端

Ruby on rails 为生产模式重新填充S3后端,为开发模式重新填充文件后端,ruby-on-rails,amazon-s3,refile,Ruby On Rails,Amazon S3,Refile,这是我第一个使用gem的Rails项目,所以我还没有完全掌握这个奇妙的文件上传gem的所有细节 我试图配置refilegem,以便在生产模式下将文件上载到amazons3,但在开发模式下,将文件上载到文件系统 我的config/initializers/refile.rb文件如下所示: require "refile/backend/s3" aws = { access_key_id: Rails.application.secrets.s3_key, secret_access_k

这是我第一个使用gem的Rails项目,所以我还没有完全掌握这个奇妙的文件上传gem的所有细节

我试图配置refilegem,以便在生产模式下将文件上载到amazons3,但在开发模式下,将文件上载到文件系统

我的config/initializers/refile.rb文件如下所示:

require "refile/backend/s3"

aws = {
  access_key_id: Rails.application.secrets.s3_key, 
  secret_access_key: Rails.application.secrets.s3_secret, 
  bucket: "adlit",
}
Refile.cache = Refile::Backend::S3.new(prefix: "cache", **aws)
Refile.store = Refile::Backend::S3.new(prefix: "store", **aws)
end
但是,当我尝试上载正在开发的图像时,会收到以下错误消息:

Missing Credentials. Unable to find AWS credentials. You can configure your     AWS credentials a few different ways: * Call AWS.config with :access_key_id and     :secret_access_key * Export AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY to ENV *...
因此,我尝试通过在条件中添加配置来修复此问题:

if Rails.env.production
  ...
end
但这并没有解决它,我仍然在开发模式下收到上面的错误消息

有人知道我如何配置Refile,以便在生产环境中将文件上载到Amazon S3,并在开发模式下将文件上载到文件系统吗

谢谢你的帮助


安东尼

我几乎完全做到了这一点,对我来说效果很好

我注意到您有一个小的打字错误,您缺少环境检查上的
。应该是:

Rails.env.production?


这能解决您的问题吗?

我认为您可以将AmazonS3的所有配置代码放在config/environments/production.rb中。

嗨,i2w,是的,这对我来说很有用。然而,在生产中,我的整个应用程序都崩溃了。我还不知道是什么原因造成的,是不是凭证问题?还不确定。@Toontje,我注意到refile和S3存在巨大的性能问题。我有一个产品支持页面,上面列出了一堆存储在S3上的文件的链接,它总是超时--呈现每个下载链接需要花费很长时间,CloudFront放弃了等待我的应用程序。我过去认为这是因为我在呈现链接之前检查实际文件是否存在,但在删除该检查后,问题仍然存在,因此现在我认为这可能与
附件url
方法有关。取决于你的应用程序正在做什么,这可能就是它崩溃的原因。