我剛剛部署了我的應用程序的Heroku,我有很多的麻煩試圖讀取部分資產軌道4:errno的:: ENOENT(沒有這樣的文件或目錄@ rb_sysopen - /資產/
。 。我試圖動態加載多個文件的某些CSS,然後用一些修改後重新編譯他們繼續違反行是第一個文件加載:
@css_asset_bootstrap = File.open(ActionController::Base.helpers.asset_path('bootstrap.css'), "r").read
生成該錯誤:
2015-04-07T23:30:50.098831+00:00 app[web.1]: Errno::ENOENT (No such file or directory @ rb_sysopen - /assets/bootstrap-2d25733981c30e34bd9aa0fb75388f08.css):
我試過了其中包括將所有資產移動到雲端。有沒有辦法解決這個問題?在開發環境中完美工作。
只是爲了確認一些事情。我已經成功預編譯並上傳了該文件。該文件肯定存在,因爲我可以看到它
heroku run bash
cd /public/assets/
我也可以看到它時,我將資產移動到cloudfront。
謝謝。
編輯1: 不知道這是很重要的信息,但對CloudFront的文件,我可以運行的Heroku運行bash的,以在Heroku上啓動一個shell會話。然後我可以:
curl http://xxx.cloudfront.net/assets/bootstrap-2d25733981c30e34bd9aa0fb75388f08.css
並獲取文件確定。我想也許這是一個權限錯誤,但一切都設置爲公開,它似乎都從heroku工作到aws服務器。
假設問題是因爲在dev env中沒有默認的動作控制器緩存,這就是爲什麼它在dev中工作,而沒有在任何其他env中打開緩存的原因。問題似乎是重新編譯資產時的摘要更改,但「@ css_asset_bootstrap」不會重新運行並指向相同的舊資產導致錯誤。嘗試在每次編譯後更新'@ css_asset_bootstrap'的值。 – vee
感謝您的評論vee。錯誤中的摘要與資產目錄中的摘要相同。如果是緩存,錯誤是不是會拋出舊的文件摘要而不是當前的文件摘要? 服務器上的文件是自舉2d25733981c30e34bd9aa0fb75388f08.css –
資產也可以使用'HTTP訪問:// myapp.herokuapp.com /資產/自舉2d25733981c30e34bd9aa0fb75388f08.css' –