2011-05-10 75 views
12

我有一個我在Heroku上部署的rails應用程序。我用幾個不同的機器,我注意到,當我添加新的依賴關係(因此Gemfile.lock重建),並在家裏我的Windows電腦上做bundle install,推到Heroku的失敗,出現以下錯誤:爲什麼Heroku不能在Windows中接受我的Gemfile.lock?

Unresolved dependencies detected; Installing... 
    Windows Gemfile.lock detected, ignoring it. 
    You have modified your Gemfile in development but did not check 
    the resulting snapshot (Gemfile.lock) into version control 
    ... 

Gemfile.lock在版本控制下,但Heroku顯然選擇忽略它,因爲它是在Windows中創建的,然後抱怨它在幾秒後丟失。爲什麼會發生?我該如何解決它?

+0

事做CR/LF在Windows VS * nix中? – 2011-05-10 20:17:38

+0

也許?從失敗推送的輸出中判斷,看起來Heroku故意忽略它。 – mranders 2011-05-10 21:19:42

+0

bundler是否可能選擇預編譯的windows二進制文件作爲依賴關係,並將它們列在'Gemfile.lock'中? – matt 2011-05-10 21:37:46

回答

9

就像Matt以上評論:

的問題是,捆紮機爲Windows創建不同Gemfile.lock秒。唯一的解決方案是在* NIX系統上創建並提交鎖文件。

我會建議創建一個虛擬機運行例如Ubuntu - 可能使用Virtual Box。您甚至可以獲得可立即使用的虛擬機 - 例如here

+3

真的沒有其他辦法嗎?這很荒謬。 Heroku人至少應該在他們的文檔中有這個。我找不到任何關於它的事情。非常感謝你的答案 - 它清除了一切! – mranders 2011-05-11 12:57:18

+0

我剛剛有同樣的問題,仍然沒有在文件中。非常奇怪,並且確實使它看起來像heroku只是對Windows用戶使用他們的服務不感興趣。 – 2011-07-23 22:30:16

+0

,這就是我不經常使用Linux的原因。有一百萬種方法可以做事,如果你沒有采取正確的方式,那麼你就被搞砸了......開發者之間沒有標準。 – 2012-05-17 05:28:16

-1

確保您在安裝該軟件包後提交更改爲Gemfile.lock。在Heroku的下一個push上,應該正確安裝新的寶石。

+0

'Genfile.lock'被提交。當我在Windows上時它不起作用。 – mranders 2011-05-10 21:18:25

+0

這個答案沒有解決這個問題。 – 2011-07-23 22:31:17

0

剛剛和這個問題爭鬥了一段時間。

我修剪我的gemfile回到軌道,仍然有問題。然後,考慮到heroku今天要求更新heroku寶石,我更加關注了heroku的變化。

似乎1.9.2紅寶石「竹」堆棧現在是默認的 - 我的應用程序仍然在1.8.7堆棧上運行。所以我運行了「heroku stack:migrate bamboo-mri-1.9.2」並將堆棧更新爲1.9.2--這不是我想要做的,但是你知道是什麼,它解決了上述問題。

當然,我不想在1.9.2堆棧上,所以我將其遷移到1.8.7堆棧,並且事情再次正確安裝。所以我認爲這是一種解決方法 - 可能是一個過於複雜的解決方案 - 但它似乎「沖洗」無論Heroku是哪方面的錯誤。由於沒有我在本地做過的(並且我嘗試了很多來自StackOverflow文章的東西)有任何影響,所以推動只是如上所述一直失敗。

所以是的,這解決了它。不要花太長時間。但是懷疑更多的Heroku知識淵博的開發者可能會發現更好的解決方法!

+0

剛剛再次遇到此問題。 Google搜索。沒有答案解決了它 - 然後在我意識到自己正在關注自己的帖子之前通過了這個過程!所以,對我來說,仍然是一個謎,但這是我能找到的唯一的治療方法,以躲避Gemfile.lock compliants ... – Phantomwhale 2011-11-03 11:18:36

24

我固定礦山打開Gemfile.lock的並刪除下面兩行:

PLATFORMS 
    x86-mingw32 

所以,現在我只需要作出這樣的捆綁,然後刪除該腳本從鎖文件。

+3

它也值得通過任何Windows版本的寶石潛入你的Gemfile.lock。 (例如...- x86-mingw32) – 2011-12-15 11:42:03

+1

這個答案是最好的,謝謝你,今天早上奮鬥了一個小時,刪除這條線很好。 – Lsdafjklsd 2012-04-09 13:25:34

+0

謝謝傑里米,那就是爲了我的朋友,爲你喝了額外的啤酒 – DevDude 2012-05-23 14:47:55

4

Heroku Docs

If the platforms section of your Gemfile contains Windows entries, such as mswin or mingw, then the Gemfile.lock file will be ignored.

+0

這對我有幫助。有一個Sqlite3寶石列出,這是一個mingw版本,幸運的是它可以被刪除,因爲我沒有使用sqlite – JCherryhomes 2012-04-04 03:48:31

相關問題