![](/img/trans.png)
[英]rails heroku app/assets/images or upload to AWS/Cloudinary
[英]Rerouting to AWS hosted assets from a Heroku Rails app
我有一個Heroku托管的Rails應用,該應用的子彈大小已達到300MB的限制,無法推送到Heroku。 為了解決此問題,我已經設置了一個AWS S3帳戶,並希望將從我的Rails應用程序請求的資產重定向到新的S3位置。 Rails應用程序基本上只是使用相對URL提供指向靜態資產的JSON文件。 然后,使用Rails JSON的iOS應用程序具有一個硬編碼的域URL,並將該資源的路徑追加到該域並請求其所需的資產。
我想更新我的Heroku應用程序並更改資產位置,而無需更新iOS應用程序即可更改資產域。 因此,我需要將靜態資產請求從Rails應用重定向到AWS服務器。
在我的git倉庫中,我忽略了移到AWS服務器的公用文件夾中的資產。 資產文件存在於我的本地計算機上,但是當上傳到Heroku時不屬於git repo的一部分。
到目前為止,我已經嘗試更改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應用程序,所以請讓我知道我是錯誤的方法還是完全錯過了“正確”的方法。
我使用路線和“ rails_serve_static_assets”解決了這個問題。 為了避免Nginx在點擊Rails應用之前返回圖像,我不得不將本地圖像移出公共文件夾。 路線最終如下所示:
match '/images/(*path)', :to => redirect { |params, request|
"#{Rails.configuration.assets.aws_url}#{request.path}"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.