ruby on rails

七月 7th, 2014 906 留下评论 阅读评论

工作需求,开始写ruby,因为基于web也就自然用上了rails。就这样开始接触ruby on rails,在已有代码的基础上很快就能上手开发了。刚开始对ruby可能有各种吐槽,不过写习惯了之后真心觉得ruby语言本身挺不错的,比Python的语法舒服多了呢。

刚开始

安装ruby真的够麻烦!装Java只要双击JDK然后配置环境变量即可;装Python只要双击python.msi然后配置环境变量即可;写这篇文章的时候我已经忘了怎么安装ruby了…只记得很麻烦,倒腾了很久! :evil:  而且安装ruby的mysql驱动更是麻烦,win至今没装上,linux的也很麻烦!

ruby语言本身相比于其他脚本语言的确难很多,语法略晦涩难懂。

和Python类似,改了很多关键字,让熟悉静态语言的编程者不太习惯,尤其是elsif;next取代了continue;rescure取代了catch

ruby的对象在外部,没有“属性”这个概念,只有方法!只有在类内部才有属性和本地变量。惊呆了 8-O

ruby的拟态函数,看着就像一条命令,着实让新手期的我非常困惑,一个不带()的函数名加一个空格后的参数;完全找不到函数的定义,可能在某些module中,可能根本没有函数体是个用rails的has_many或者named_scope动态定义的函数…模块定义的函数,实例函数和静态函数也傻傻分不清楚。 :twisted:

虽说Ruby和Java一样是纯OOP的语言,但是OOP的特性又很不一样,Ruby甚至不怎么推荐OOP的做法。

渐渐地

有点喜欢ruby了

  •  函数名不带括号感觉很省事,导致写js的时候老忘了括号
  • 类似 return nil if params[:id] == nil的一行代码,还可以 render_error and return [ if xxx ],感觉太棒
  • 遍历list/hash是那么方便
  • 函数随意带block,自定义化程度非常高
  • rails是那么的强大,写web是那么的方便

rails和web

写web,静态语言就Java(.Net不熟),脚本语言比较多:PHP、Python、Ruby,基本以这些为主流。Java不必说,太复杂开发效率低;PHP最灵活方便,但是没有一个好用强大的框架支持,功能复杂就显得力不从心;Python基于web写的不多,10年的时候用过Django,只能说一般般,现在不知道怎么样了,公司里也有同事在用Python写web,但感觉明显没有rails爽。

  • rails的ORM强大到没有朋友
  • 对ruby核心库的加强(ruby可以往原有类中直接加入API,不需要像Java中Apache类库的StringUtils那样用新的类)
  • view层面太方便的嵌套片段HTML;对ajax支持很好
  • debug方便,不仅方便地打印出所有SQL和模板加载,甚至有加载时间,优化起来很顺手

深深的觉得,没有了rails,ruby真心没有太多闪光的地方…大概这也就是为什么ruby一直和rails绑定的关系吧

ruby和rails的不足

用到现在,受Java的影响,觉得ruby在以下几个方面用的还不是很灵活不习惯。很大程度上应该是自己对ruby和rails的了解还不够深入。

  • 继承体系:没有丰富的继承体系,OOP怎么体现优势?但是感觉rails中,写rails的Model时候,很难使用到完全自定义很灵活的继承体系。或者说Ruby的理念就不怎么喜欢用继承体系,更喜欢用Module的扩展甚至打开类技术。
  • 数据结构库不丰富:只有内置的list/hash,对于常用的LinkedList、OrderedHashMap、HashSet等替代实现没有找到
Categories: ruby on rails 标签:, ,
  1. 还没有评论呢。
icon_wink.gif icon_neutral.gif icon_mad.gif icon_twisted.gif icon_smile.gif icon_eek.gif icon_sad.gif icon_rolleyes.gif icon_razz.gif icon_redface.gif icon_surprised.gif icon_mrgreen.gif icon_lol.gif icon_idea.gif icon_biggrin.gif icon_evil.gif icon_cry.gif icon_cool.gif icon_arrow.gif icon_confused.gif icon_question.gif icon_exclaim.gif