2009-12-20 42 views
1

我正在學習Ruby on Rails與AWDR書,並且必須具體說明我在本地計算機上運行的Rails和Ruby版本。我剛剛發現我需要從ruby 1.8.7回滾到ruby 1.8.6 here。我還需要回滾Rails以支持腳手架方法,以便我可以輕鬆啓動教程。管理許多不同版本的Ruby on Rails應用程序

我的問題是:當我開始簽約,在現實世界中開發和部署項目時,我將如何管理所有這些不同的版本?

在我看來,鐵路對傳統代碼的低容忍抵消了其易用性理念!但我相信我會越來越欣賞RoR。

回答

2

RubyGems是Ruby的包管理器。您可以根據需要安裝儘可能多的寶石(軟件包)版本。您可以通過運行sudo gem install rails來安裝最新版本(目前它將安裝2.3.5)。如果您需要2.2.2,請使用-v--version選項指定:sudo gem install rails --version 2.2.2。 Rails還安裝了一個二進制文件(是的,我知道它不是一個真正的二進制文件),它會生成一個項目。因爲你有幾個版本的寶石,你需要控制被調用的二進制文件。當您安裝rails gem時,RubyGems會將一個文件放在它的bin/ dir中,這是與實際的rails二進制文件的「鏈接」。當你在命令行上說rails時,這是你「呼叫」的那個人。但是,所有rubygems「鏈接」二進制文件都接受它自己的參數,這是您要使用的版本。你會使用2.2.2導軌二進制這樣的:

rails _2.2.2_ my_project 

我覺得默認的是使用最新的版本,所以如果你想使用最新的版本,這樣做:

rails myproject 

但是,我看到您使用2.2.2來訪問scaffold方法。我強烈建議你不要使用該方法,但有理由將其刪除。 scaffold方法隱藏代碼,並使定製變得困難。相反,使用腳手架發電機:

./script/generate scaffold --help 

祝你未來的鐵軌冒險!

+0

是的,我看到腳手架已折舊。它在AWDR書中。一旦我閱讀本書,我將從我的技能組中刪除它:) 謝謝! – Rimian 2010-01-24 04:10:02

2

最新版本的Agile Web是爲2.2.2編寫的,我相信。對於這個基本的應用程序,他們引導你通過我非常確定它應該與2.3.x工作

你如何跟上問題的答案是,你需要更新你的應用程序,並閱讀API和Changleogs找到了解已更改的內容並修復升級失敗的內容。一個很好的方式來幫助這個有一個好的測試套件,測試覆蓋面很好。

+0

有幫助的回答。但是這可能嗎?如果我簽約使用舊版本,我必須能夠運行它。如果客戶不希望我升級它會怎麼樣?但是,您的解決方案聽起來很理想。 – Rimian 2009-12-20 04:37:34

+1

如果您需要運行舊版本的gems,請在environment.rb中指定它們及其版本,然後按照@khelll的建議將rails和gem凍結到vendor目錄中。 – nitecoder 2009-12-20 11:42:24

3

至於Rails中,你可以做的是凍結您的版本,例如:

  1. 確保安裝正確的Rails版本,假設你想版本2.2.2:gem install rails V = 2.2.2
  2. rake rails:freeze:edge RELEASE=2.2.2

現在你會發現包裝項目的供應商文件夾內Rails的,所以你不必在部署機器上安裝Rails:與項目本身

  • 冷凍和包裝軌。

    對於Ruby,我喜歡Ruby Version Manager(RVM),這是管理Ruby版本的最簡單方法。

  • +0

    補充一下,現在我必須更多地瞭解你的答案!謝謝:) – Rimian 2009-12-20 04:38:09

    +0

    哪一部分你不明白? – khelll 2009-12-20 04:49:20

    +0

    我不知道寶石和耙子究竟是什麼。我想我很快就會學到它。 如果我在我的項目中包裝了rails,在十幾個項目之後不會有大量的代碼來管理嗎? – Rimian 2009-12-20 09:43:11

    相關問題