【发布时间】:2015-06-13 18:27:58
【问题描述】:
我有一个 Heroku 托管的 Rails 应用程序,它的 slug 大小已达到 300MB 限制,无法推送到 Heroku。为了解决这个问题,我设置了一个 AWS S3 账户,并希望将从我的 Rails 应用程序请求的资产重定向到新的 S3 位置。 Rails 应用程序基本上只是提供使用相对 URL 指向静态资产的 JSON 文件。然后,使用 Rails JSON 的 iOS 应用程序具有硬编码的域 URL,并将资源的路径附加到该域并请求它需要的资产。
我想更新我的 Heroku 应用并更改我的资产位置,而不需要更新 iOS 应用来更改资产域。所以,我需要将 Rails 应用程序中的静态资产请求重定向到 AWS 服务器。
在我的 git 存储库中,我忽略了已移动到 AWS 服务器的公用文件夹中的资产。资产文件存在于我的本地计算机上,但在上传到 Heroku 时不属于 git 存储库。
到目前为止,我已尝试更改 config.action_controller.asset_host,但这似乎不起作用,因为这些是静态资产,并且在 Rails 获取之前由 Web 服务器返回。
我尝试使用路由规则重定向到不同的域,但这些路由似乎从未被捕获。静态文件似乎在 Rails 应用有机会处理请求之前返回。
我尝试使用 rack-rewrite gem 尝试将我的资产重定向到不同的域,并在 `initializers/rack_rewrite.rb 中使用以下内容:
require 'rack/rewrite'
AppNamespace::Application.config.middleware.insert_before(Rack::Lock, Rack::Rewrite) do
r301 %r{/images(.*)}, 'http://my-subdomain.amazonaws.com/images$1'
end
这似乎也不起作用,它总是只返回静态文件。
到目前为止,我已经尝试了几个小时来找出处理这种情况的正确方法。我不是 Rails 开发人员,我开发的是 iOS 应用程序,所以请让我知道我是否以错误的方式处理此问题或完全错过了“正确”的执行方式。
【问题讨论】:
标签: ruby-on-rails ruby git amazon-web-services heroku