2012-06-13 49 views
3

當我嘗試訪問我的網站,然後檢查我的Heroku的日誌,我看到這個錯誤:Heroku無法在我的Ruby on Rails應用程序中找到文件 - 即使它們在那裏?

ActionView::Template::Error (couldn't find file 'reset' 2012-06-13T02:31:43+00:00 app[web.1]: (in /app/app/assets/stylesheets/application.css:4)):

(application.css包含行* =需要復位)

後來我想運行「 Heroku的運行捆綁高管耙資產:預編譯:所有「但是這給類似的錯誤:

-----> Preparing app for Rails asset pipeline 
     Running: rake assets:precompile 
     rake aborted! 
     couldn't find file 'main/first.js.coffee' 
     (in /tmp/build_3428u21sggsoc/app/assets/javascripts/application.js:1) 
     Tasks: TOP => assets:precompile:primary 

(該文件是第一個從我的application.js需要,它有第一行的」 // =需要主/ first.js.coffee「)

總結:我的應用程序在本地運行良好,但是當我部署到Heroku時,無法再找到這些文件。任何想法爲什麼?

編輯:這裏是項目樹。 (在應用程序之前還有一個目錄,這也是包含config,db,log等的主項目目錄)

另一個編輯:.gitignore或.slugignore沒有問題。

project tree showing first.js.coffee

application.js

+0

你可以把你的項目文件樹的屏幕截圖? –

+0

你所有的文件都簽入git?你正在雪松堆棧上運行? – house9

+0

是的,他們都被檢入混合,我在雪松。 – Geoff

回答

3

起初,我建議你在本地計算機上以生產模式運行你的應用程序。有一些錯誤(在資產中,但我也發現了一些在路由中),這些錯誤僅對生產環境有影響,因此您可以在本地測試和修復它們,而不必從生產服務器上執行它。

關於Heroku的資產預編譯,akjoe給出的解決方案應該導致編譯的資產在git repo中被跟蹤:使用這個選項,您應該禁用在Heroku上發生的資產預編譯並讓Rails爲您提供資產(設置config.serve_static_assets = true你的production.rb文件),但這不是處理資產管道的最好方法,因爲你失去了他的一大好處,那就是釋放你的rails資源請求。 爲了使它正常工作,你應該建立類似Heroku的解釋:Using Rack::Cache with Memcached for Static Asset Caching in Rails 3.1+

我也建議你嘗試資產生產環境RAILS_ENV=production bundle exec rake assets:precompile本地預編譯。看看你是否有任何錯誤。

最後,你可能要檢查這個不同的鏈接,找到有用的信息:

2

我已經幾乎完全同樣的問題,用樣式表編輯未生效類似的錯誤......我發現,我會編輯CSS(或在您的案件引用css文件)似乎被Heroku忽略。結果Heroku僅僅引用public/assets目錄中的樣式表。我清除了這個目錄,並能夠使其工作。 我後來發現,在簽入git之前,您需要預編譯您的資產目錄。你可以這樣做如下:

  1. 預編譯的資產目錄:rake assets:precompile
  2. 項目文件添加到當前的Git倉庫:git add .
  3. 簽入文件更改爲當前Git倉庫:git commit -am "description goes here"
  4. 推Heroku的文件:git push heroku master(替代 「master」,用於希望推送到Heroku的分支)。

希望有所幫助!

+0

我遵循你的指示,但在部署到Heroku時仍然出現相同的錯誤:無法找到文件'main/first.js.coffee' – Geoff

相關問題