這可能是一個明顯的問題,但我在搜索最佳實踐方面遇到了困難。我使用的是Rails 3.0和Bundler。如何鎖定我的導軌項目的寶石?
我開始在我的工作筆記本電腦上開發Rails應用程序。我將寶石名稱添加到我的gem文件並運行軟件包安裝。當我這樣做時,我並沒有太在意我需要什麼版本的寶石,我只是讓Bundler安裝最新版本。一切工作正常。
我把這個應用程序推到Heroku,它只是工作。
Heroku是否使用我的Gemfile.lock文件中定義的gem版本?還是它使用Gemfile獲取最新版本並安裝它們?
然後我拿到了一臺新的筆記本電腦。所以我決定在該筆記本電腦上克隆git repo。我安裝了RVM,克隆了GitHub的repo,然後在本地運行軟件包安裝。問題是因爲我沒有在Gemfile中指定gem版本,所以運行
bundle install
下載了最新的gem版本。我做了一些CSS更改並推送到Heroku,並驚訝地發現應用程序被破壞。顯然,回形針寶石現在需要一些其他的寶石或其他東西。因此,我查看了Gemfile.lock上的git日誌,發現了以前的回形針工作版本,並將該版本號放入Gemfile中。重新加入到heroku中,它再次運行。
如何避免此問題的發生?我應該總是把寶石版本號放進我的Gemfile中嗎?我應該售賣我的寶石(我以前沒有做過,怎麼做)?
您確定*它安裝了最新版本嗎?你沒有把Gemfile.lock文件簽入你的倉庫嗎? – 2012-03-05 17:42:06
是的,我確實有Gemfile.lock簽入我的回購。但是當我在我的新筆記本上運行bundle安裝時,它獲取了最新的gem版本並覆蓋了本地的Gemfile.lock。 – Homan 2012-03-07 21:16:52
如果這真的發生了,那麼你在Bundler遇到了一個錯誤。確保你使用的是Bundler的最新版本,如果你能夠明確地複製這種行爲,請[報告](https://github.com/carlhuda/bundler/issues/new)。 – 2012-03-07 21:27:57