2009-09-16 137 views
29

我正在開發一個Ruby on Rails應用程序,我至少要維護幾年,所以我很關心下一個版本即將推出。如何使我的Ruby on Rails 2.3.4應用程序「Rails 3-ready」

從Rails 1跳到Rails 2是一件非常痛苦的事情,我沒有打擾並凍結我的寶石,讓應用程序單獨在黑暗中死去。

在這個項目上,我不想那樣做。首先是因爲this new version looks awesome,但也因爲這個應用程序可能變成一個真正的產品。

  • 我該如何準備自己的應用程序,以便儘可能少地進行升級。

  • 您認爲切換版本會花費多少時間?

  • 那我的服務器呢?部署?

我已經在尋找不贊成通知......我還能做什麼?

回答

10

最好的t你可以做的事情是通過博客和Github存儲庫來跟蹤Rails 3的開發,並跟隨你的應用程序的副本。

官方Ruby on Rails blog每隔一段時間更新一次「Edge的新功能」。有經常在邊緣寫新東西的otherblogs。這些博客中經常會突出顯示較大的功能,因此您可以瞭解所有可以使用的酷炫新功能。

我不確定Rails 3的發佈有多接近(最後我聽說核心團隊在五月份在RailsConf 2009上發佈了一個版本),但是您總是可以將Rails的邊緣版本凍結到您的應用程序中,看看有什麼突破。如果您使用的是git或其他DVCS,則可以專門爲Rails 3創建分支,並定期將Rails更新爲最新的邊緣代碼。請注意,邊緣Rails是一個移動的目標,因此當您在使用較新的Rails代碼時,應用程序中的事物可能會破壞或修復自己。

更新: Jeremy McAnally在他的博客上提供了從Rails 2升級到Rails 3的大量信息。 http://omgbloglol.com/

+2

雖然「很酷的新功能」經常被博客討論,但問題在於棄用;是否有人在積極地撰寫關於什麼不會/不再工作的博客? – Stobor

+0

使用Rails 2.3.9運行你的應用程序(http://weblog.rubyonrails.org/2010/9/4/ruby-on-rails-2-3-9-released) – Matt

2

我不認爲會有一個主要問題。去關什麼在初次報告Rails的團隊意識到,他們不能做重大改寫像他們從1到做2

說,他們甚至說:

我敢肯定有」將會是Rails 3的一些不兼容的部分,但我們會盡量將它們保持在最低限度,並且將Rails 2.x應用程序轉換爲Rails 3非常容易。

我會更關心的從Merb到Rails 3.

1

爲了準備你的應用程序,Jared說的最好的方式。遵循Rails3開發。

耗時,我認爲這取決於您在發佈之前如何遵循rails3開發。

而對於部署,它不應該帶來太多問題。 Rails 3將使用Rack。所以你可以用雜種,乘客或任何服務器/網關啓動它,它不應該給你任何問題。

2

你可以做,可以很容易地遷移到軌道的一個新版本的一個最重要的事情是有一個全面的測試套件。沒有一個好的測試套件,我永遠不會有信心,新版本的rails沒有在我的應用程序中破壞某些東西。在我正在開發的當前Rails應用程序中,我們從2008年10月開始使用Rails 2.1.1。從那時起,我們已經遷移到Rails 2.1.2,2.2.2,2.3.2,2.3.3以及現在2.3.4。我做了遷移到2.3.2,2.3.3和2.3.4 ...以及2.3.2和2.3.3升級,我們有一些失敗的測試,提醒我們如果沒有這樣的一個我們不會發現的問題好的測試套件。失敗的測試實際上提醒我們在Rails燈塔中有一個退步錯誤,但它沒有包含在發行版中(因爲它是在發佈後發現的)。

一旦你得到了測試套件的地方,只是留在每個軌釋放電流(等待一兩個星期升級是好的,只是不跳過任何版本的)。

Yehuda Katz(Rails核心團隊的成員)has stated最有可能是過渡版本,包含棄用警告等。

所以只要你有一個很好的測試套件,露出不可避免的升級問題,並保持與Rails釋放電流,遷移到Rails 3應該不會太困難。

1

將會有一些自動兼容性檢查器。另外,請留意http://www.railsplugins.org/,以便您知道您所依賴的庫是否將升級。 Rails Core團隊似乎在這個時候給社區提供了很多預先通知,所以任何積極維護的lib都應該很好。

+0

http://isitruby19.com/是也是一個很好的網站,以保持關注。由於Rails具有1.9完全兼容性,因此很多人都將升級到Ruby 1.9。 – Jared

1

只要做一件事

把你的舊工程的備份,然後再

在終端(命令提示符)如果我寫2.3

rails new path/of/the/project 

例如。*項目是home/rails_projects/myproject然後

rails new home/rails_projects/myproject 

cd home/rails_projects 
rails new myproject 

它會問,如果有任何/config或其他文件進行任何修改。做適當的。