2011-08-08 46 views
2

我在靜態資源(圖片,js和樣式表)沒有在Heroku上投放時遇到問題。 在我的本地開發環境中正常工作。靜態資產沒有在Heroku/Thin上投放

錯誤是這樣的:

2011-08-08T02:58:45+00:00 app[web.1]: Started GET "/stylesheets/reset.css" for 98.234.235.21 at 2011-08-07 19:58:45 -0700 
2011-08-08T02:58:45+00:00 app[web.1]: 
2011-08-08T02:58:45+00:00 app[web.1]: ActionController::RoutingError (No route matches "/stylesheets/reset.css"): 

我使用:

  • 的Ruby 1.9.2
  • 的Rails 3.0.7
  • Heroku的竹-MRI-1.9.2和瘦Web服務器。 (我也跟着拖欠heroku.com基本的安裝說明)

我搜索對谷歌/計算器,並試圖與沒有運氣以下:

  • 刪除config.ru
  • 添加use ActionDispatch::Static, "#{Rails.root}/public"到config.ru
  • 設置staging.rb config.serve_static_assets = true

任何人都可以提出一個解決?我應該使用Cedar而不是Bamboo嗎?我應該使用別的東西而不是瘦?

謝謝!


編輯: js文件正在被送達,但圖像和樣式表都沒有。 我檢查了我的鏈接中的路徑是一致的。

myapp.heroku.com/stylesheets/reset.css - 失敗 myapp.heroku.com/javascripts/jquery.js - 成功

我也試圖進行以下設置:config.action_dispatch.x_sendfile_header = nil。 這與config.serve_static_assets = true一起,但注意到Heroku強制這些選項,無論你如何設置它們。也就是說,它在啓動過程中執行以下操作:

-----> Detected Rails is not set to serve static_assets 
     Installing rails3_serve_static_assets... done 
-----> Configure Rails 3 to disable x-sendfile 
     Installing rails3_disable_x_sendfile... done 

回答

3

問題原來是資產文件沒有推到heroku(我有一個混帳擰緊,而不是一個英雄問題)。

當我與他們聯繫時,Heroku支持人員指出了這一點。他們及時與詳細的解答,其中還包括了以下評論說:

    不需要
  • Heroku的寶石在Heroku上運行
  • 指定的Gemfile Postgres的寶石;在本地使用postgres代替sqlite3開發
  • config。RU:不要直接運行調度,運行應用程序容器
  • 不設置x_sendfile_header爲零,因爲這是不正確的支持on Rails的3(這是Rails 3.1的設置)
0

我沒有信心的Heroku在staging環境中運行,我認爲這是在production環境中運行,而不是,這就是爲什麼沒有被應用設置。

+0

瑞安,我把它配置成運行分段,並驗證我的更改正在應用:'heroku config --remote staging'顯示'RACK_ENV =>分段和'RAILS_ENV =>分段 – stupakov