是否存在"挂载"Heroku应用程序下的资产文件夹,然后将其链接到S3存储桶的概念?
我有一个带有"公共"资产文件夹的节点应用程序.我想.slugignore我本地项目中的"public"文件夹,将grunt上传到s3存储桶,git在启动时将代码推送到Heroku."public"文件夹将是可见的,但来自S3存储桶而不是Heroku的本地文件系统.
我查看了Heroku的文档,但是(除了设置env变量之外)没有"自动"可以将S3存储桶挂载到本地Heroku/app文件夹.
我不知道有任何现成的解决方案。但基本的设置似乎触手可及。这是在路由中使用动态段并在控制器中使用重定向的第一遍:
在routes.rb中:
get 's3/:file_key', to: 's3_redirects#show'
Run Code Online (Sandbox Code Playgroud)
s3_redirects_controller.rb:
class S3RedirectsController < ApplicationController
def show
bucket = get_bucket
file_key = params[:file_key]
file_key += "." + params[:format] if params[:format].present?
s3_file_link = RightAws::S3Interface.new(your_config_options_here).get_link(bucket, file_key, link_expiration_time)
redirect_to s3_file_link
end
end
Run Code Online (Sandbox Code Playgroud)
显然,您可以替换您最喜欢的与 S3 文件交互的方法,并且您必须定义 get_bucket 等。
当然,这只会命中有效的键,否则您会得到“不存在这样的键”。如果您正在寻找索引/ls 类型操作,当然还需要做更多工作,但只要您有合理的方法从 S3 获取您要查找的数据,这里的基本结构就应该允许您这样做。
| 归档时间: |
|
| 查看次数: |
913 次 |
| 最近记录: |