Rails的一些实践

Feb 14, 2011

    这篇文章拖到过年之后才写,真是够拖拉的,厄,不过赶的早不如赶得巧,刚好Ryan Bates更新他的railscastsMetrics Metrics Metrics,而这集跟我要将的东东还蛮有联系的.过年之前我一直在一个公司内部的rails项目试手,因为之前我没有任何的ruby/rails经验,所以这个项目的过程也是有点点坎坷的.我一边在学习知识,同时又将刚刚学到的东西应用出来,就是一个不断学习不断改进的过程.整个学习过程中当然也参考了很多网站拉,比如railscasts阿等等. 那其实整个过程中我都有收获满多的心得,很多之前写的不是elegant的代码,随着后来对其识认识的进一步深入而 变的更加的干淨整洁了.我当时也有萌芽个想法去总结这个东西,因为那个时候整个办公室也是有满多跟我一样的rails/ruby新手,如果有这个总结性的东西,也更加有利于知识的分享,更重要的是一个抛砖引玉的效果,让大家的想法经验都能汇集起来.但是一直没有找到这样的一个方式能帮助我更好将心得给表达出来.直到我发现了ihower的rails best pratice这个ppt,这才让我找到了这样一个很不错的方式和参考。     实际上了,大部分上面的practice还都是蛮有用的,但是有些地方还真是不一定适用。比如上面提到的使用metaprogramming来减少一些重复,还有一段代码 def self.all_cmts Person.all.select{|p| p.cmt?} end def self.all_hrs Person.all.select{|p| p.hr?} end     以开始我也想得是说使用metaprogramming来减少重复,但是发现写出来的代码实际上是蛮复杂的,考虑到代码的可读性和可维护性,在这个桉例上我们并没有使用这个practice.     那其实还有另外一点值得提到的就是,在session过程进行到permission check这一块时,我其实是没有特别好的注意或办法的,因为这一块我也不是非常熟,所以我想的是把这个问题抛出来,果然徐昊有提出了更好的方桉。相对于我将权限检查这一块扔到模型层(原因是因为需要权限检查将会是在一个非常细粒度的级别上,比如字段,当然我也参考过那个declarative authorization,它应该是能够在字段级别进行检查,或许不是很大问题,但是如何垮字段的检查,不是特别清楚,但是那是一个不同的故事了) , 而是将权限检查提取到控制层,从而保持模型层的干淨整洁,pretty cool。 Rails Best Practices 投影片 Railscasts  Metric Fu Rails Best Practice Gem Rails Best Practice Website     下面是我订阅的關於rails的一些博客. Update: 如何寫出有效率的 Ruby Code by ihower Writing Efficient Ruby Code