簡體   English   中英

從Heroku Rails應用程序重新路由到AWS托管資產

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM