2013-10-05 169 views
0

當我試圖推到Heroku的我得到這個消息:軌Heroku的資產預編譯失敗的原因耙版本

rake aborted! undefined method empty? for nil:NilClass (in /tmp/build_3d16ad44-0015-4ecb-a7cf-a41959f03f82/app/assets/stylesheets/application.css.scss)

在跟蹤它,我意識到,這是因爲

rake aborted! You have already activated rake 10.0.3, but your Gemfile requires rake 0.9.2.2. Using bundle exec may solve this.

這可能是一個非常愚蠢的問題,但我不確定我應該如何使用bundle exec爲heroku執行此操作?請幫忙。謝謝。

+0

您如何預編譯資產?我認爲Heroku正在對它們進行預編譯(當你在推動Heroku時)?什麼版本的Rails? –

+0

heroku在推送時對它們進行了預編譯。我正在使用rails 3.2 – noob

回答

0

裏面的項目目錄中終端:

gem list rake 

你會看到不止一個版本的更多。如果是這樣,那麼通過命令來刪除你不需要的版本(即你的情況10.0.3):

gem uninstall rake 

它會問你具體的版本,從列表中選擇,選擇一個,然後按回車。

或者,您也可以更新至特定版本耙

bundle update rake -v '0.9.2.2' 
2

萬一別人運行到類似的問題。問題在於,heroku在所有新應用程序中使用了ruby 2.0,所以爲了做到這一點,你必須將你正在使用的任何ruby版本放在gemfile上,然後在你的命令行中輸入git reset --soft HEAD~然後輸入git reset HEAD public/assets來重置git。如果您在公共/資產中有未跟蹤的文件,則爲rm -r public/assets。然後保存更改並推送到您的新網站。

因此,如果您的應用使用的是舊版本的2.0以上的ruby,您必須作出類似的更改,直到bug(sprocket?)被修復。

+0

noob我也有這個相同的問題..我不知道如何跟蹤我的問題,plzzz給程序追查我的問題.... – praveenkumar