Rails Upgrade 到 Rails4 的一些感想

xdite · 2013年05月03日 · 最后由 JeskTop 回复于 2013年05月22日 · 8461 次阅读
本帖已被管理员设置为精华贴

http://blog.rocodev.com/posts/10-upgrade-to-rails4

Rails4 在前天的 RailsConf 2013 釋出 Rails 4.0 RC1 了,這也表示大家應該可以進場了。

上個月在 Rails 4.0 beta1 時為了練手感,把手上的一個中小 production 專案,也上了 rails4 branch。

大概有幾個感想:

  • Upgrading to Rails4 這本書強烈建議要買,才 $15 USD,可以節省你不少 debug 時間。

  • 升 Rails4 建議不只開 branch,也用 rvm 開一個 gemset 出來作,因為 gem dependency 變更蠻多的。

  • rails4_upgrade 要裝。這個 gem 蠻好用的..可以幫你掃 dependency 問題。事實上 Rails3 升 Rails4 最討厭的是 gem dependency tree,因為 Rails 3 已經出太久了(幾乎快兩年了吧),很多 Gemfile 都強綁定 3,所以升 Gemfile 時會出現很多問題...

  • major gem,如 simple_form, devise, 幾乎都有 beta1 版,裝了就保證可以動。小的 gem 也幾乎都有 rails4 branch 可以 hotfix。(起碼我在 beta1 進場時遇到的問題就幾乎都有解,所以在 rc1 的狀況應該會更好)

  • 這次 Rails4 的改動,我個人的感想會是 Rails3 的 New Feature, Better syntax Version。如果平常 code 都寫的蠻漂亮(接口和封裝乾淨)的話,升級應該是沒有太痛才對。唯一讓人很煩的就是 gem dependency 解不完,還有牽扯到 scope 與 query 的部份幾乎都要重寫..:/ (目前是都還跳 warning 而已,但真要清 warning,如果 model 裡面 condition 很多,真的會清到手快斷...)

  • 有關於 New Feature 與 Better syntax 這個議題,我應該週末會寫一篇出來..

  • Rails project 的本體內容物是沒有改動太大,但大家拿來 build gem 的 internal API 改不少,這也難怪 Jose Valim 這一兩天也同步釋出了 Crafting Rails Applications (2nd edition): Expert Practices for Everyday Rails Development 第二版的 beta。我這幾天改 gem 要升 Rails4 也是中了一堆 api 變更的地雷…

  • 會逼大家都改 gem 的原因是因為是,連 migration api 都改了,所以只要提供產生 migration 的 gem 通通會逼要升 Rails4,真是個好招 -_- (連我只有兩個 commit 的 AutoFacebook gem 也不能倖免。解法在這裡

  • Obie Fernandez 前天也宣布了 Rails 聖經 The Rails 4 Way開始 beta。值得注意的是他這次是使用 Leanpub 釋出書籍的 beta,而非走 Informit 的 RoughCut 版本。

Thanks,省了我不少时间踏坑

感谢分享。昨天刚开始一个 Rails4 的项目,已经做好心理准备碰到各种坑。

目前 gem 跟不上,过一个月肯定情况少一堆

受用。

谢谢,此文提供了众多有益链接

感觉 leanpub 上的书都挺不错的,价格还行,实战性强

@xdite 谢谢!好文,转日我也把我的一个站点 upgrade 一下

BTW, leanpub 的 Link 错写成相对路径了。

Upgrading to Rails 4 这本书买的时候可以用 Coupon "RAILSCONF",可以便宜 3 刀

匿名 #10 2013年05月06日

assets 的问题很蛋疼,很多 gem 还没有跟进。。。

assets 的问题很蛋疼,很多 gem 还没有跟进。。。

不折腾,等 3 个月之后再看。先去做正经事。

同志们都这么说,那我还是坐等各位都折腾出经验了再升级吧,否则碰到问题都不会解……

#13 楼 @chairy11 反正我是在 heroku 上部署没有通过~~

#14 楼 @small_fish__ 那能通过时记得通知我,那时候我再升级……

#13 楼 @chairy11 新项目没问题,但升上来的,就要考虑一下

#16 楼 @imlcl 那我要是现在开始新项目呢?先用 Rails3.2 好,还是直接用 Rails4 好?Gem 啥的如果 Rails4 用不了怎么办?

#17 楼 @chairy11 我觉得可以用新的了,就和这文章说的,基本没什么问题了,再从 3.2 建,到时还不是要再痛一次升级到 4?以上是我个人看法

打算等正式版放出在再升级。

办正事要紧,没事不折腾

#21 楼 @murphy 技术债总是要还的,只是想拖延到项目换手,让后来人收拾烂摊子吧... 或者就是短命项目根本不 care 升级问题。

我想知道有哪些 gem 是支持 rails4 的,我看了没有多少个是支持的。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号