我为什么放弃rails

2012-11-30 10:36:44 +08:00
 BigZ
在我看来,ruby&rails有很多优点:

%w,%q这样的缩写,说明ruby的作者写过大量的代码,coding经验丰富,对php又很深的恶感

代码block和 函数最后一行作为返回值,这些对于老码农来说,都是特别感兴趣的特点,你如果写过10万行以上的代码,那么你会对一切减少敲键盘的设计都非常喜欢

rails的ActiveRecord 比django的orm强不少,可以随意的写get_by_xxx函数,可以对某个字段单独update,包括db:migrate工具也是,用起来很舒服

rails把表单验证都加之在ActiveRecord上,这种设计,对于快速开发的项目,开发效率惊人

http://lutaf.com/78.htm
10816 次点击
所在节点    Ruby
46 条回复
BigZ
2012-11-30 22:01:53 +08:00
@cranej 技术搞小圈子是没有生命的
BigZ
2012-11-30 22:03:27 +08:00
@reducm 能否写出更多有价值的论据呢?而不仅仅是结论
使用某种开发工具的时候,我通常习惯翻开代码, rails这两年难道有什么跨代的改进么?
BigZ
2012-11-30 22:06:05 +08:00
@hidden windows做服务器,企业市场居多

互联网用windows太不方便了,首先是网速一般的情况下,用GUI操作不流畅
BigZ
2012-11-30 22:09:04 +08:00
@huyipeng 请你不要发表这些低劣言论,类似问题我已经回答过超过3次了,我将不再回应

请关注我的观点本身,无论你赞同与否,多写几个字,说你的论据,对大家都有帮助
不要跑题
cabbala
2012-11-30 22:11:32 +08:00
@Narcissu5 这是老梗了。。还有人信。。
BigZ
2012-11-30 22:13:16 +08:00
@pepsin 这点我赞同,实际上我自己编写的框架都是约定多于配置

rails本身很精良,放弃它主要是 各种代码生成器太慢+胡乱引入第三方包
fwee
2012-11-30 22:31:12 +08:00
笑了,这个作者看来更喜欢写一堆xml配置。

约定优于配置这么好的地方居然都黑。。
真想问他从哪个版本找到的bootstrap
blankyao
2012-11-30 22:47:13 +08:00
楼主应该是装了某个Gem,然后这个Gem带了或者依赖bootstrap吧?
hepochen
2012-12-01 00:45:58 +08:00
LZ说的rails比django强大的地方,实际django也能做;说rails不灵的地方,就真的不灵了?

用django做例去说明对方的“臃肿”,这种说明是不恰当的,python和ruby两兄弟有时吵吵挺有趣的,但这样子真的没有水准了。

LZ虽然写了10年代码,但是仔细看了你的博客,坦白说,技术水平真的不像有10年的样子,“ 作为一个有丰富经验的 django 开发者” 这句话,唉,你真的不算有经验,丰富更谈不上了。而且对产品经理的理解也很基础。

我觉得能理解LZ,但相信你也不会很容易听进去;特别是一些貌似正确的理论听得越多,自己几经转述,就越容易脱离正轨。

因为之前下面带过类似的同事,能做事,踏实靠谱,但是在我的世界中属于不够聪明的一类人;实际管理中还必须要夸他聪明,强烈的需要得到认同。时间越久,感觉距离就越远。当然,人家也混得不错。

只是,时间越久,人越老,戾气有些时候也会多起来。

另外,就算是推荐新人去学rails,也不应该去推荐php吧?你不是在挤兑rails,你其实在毁python和django。
workaholic
2012-12-01 08:50:41 +08:00
初级软文
reducm
2012-12-01 14:13:27 +08:00
@BigZ 回楼主,你的行文风格让我觉得你是比较难以说服的人,所以我在想指出一下,除了你说windows安装麻烦之外,与我所见印象中的Rails特点都有出入,除此之外就是天可怜楼主假如你还肯再去深入了解一下Rails,和一些新版本的特性,或会撤回你之前的观点让这贴不再继续下去。

不说论据可能就是觉得这是很麻烦的事,特别是自己浅显易见的东西但别人不肯花点时间去了解就去草草得出另一结论,这很多时候都会产生无力感,相信也是很多用Rails的同学不愿回应的原因

题外话,我觉得楼主博客界面设计得挺简洁,挺好看的

你的文章一开始罗列了很多你过去的经验,“rails,我07年买过一本 Agile web development with rails,这次翻出来重新看了一遍”,到这句为止还未看到和“我为什么要放弃Rails”有相关的东西。

“%w,%q这样的缩写,说明ruby的作者写过大量的代码,coding经验丰富,对php又很深的恶感”,不明白为什么会得出“说明ruby作者对php有很深的恶感"的结论

“rails的ActiveRecord 比django的orm强不少,可以随意的写get_by_xxx函数”
楼主应该是说写find_by_xxx的函数吧?

“各种生成器慢的惊人,任何一个操作都要等5-6秒”



这是在我自己mbp13寸低配上面直接生成scaffold的时间,已经同时生成了model,controller,view,test一堆东西了,我觉得这时间还可以接受。Ruby的性能是比不上其他脚本语言,但再重申一下Ruby圈子的哲学就是,快速把东西做好,等到你产品真要为那高访问量带来的性能问题烦恼的时候,你已经幸福死了。还有恶感php的Ruby作者说,Ruby2.0出来的时候,会让大家觉得性能问题不再是个问题,对这个我们还是蛮有期待的。

“约定太多,每个model都要按部就班的定义controller,每个controller,model都只能定义在单独的文件当中”
约定优于配置,貌似楼主上面几楼已经肯定了这个好处,另外我也不太了解一个文件可以多写几个model和多写几个controller有什么好处,我最近用spine,很多时候贪方便一个文件写好几个controller,我觉得维护时定位代码起来很麻烦,一个文件塞太多东西也不美观。

“rails版本维护者,已经进入魔怔,任何一个第三方包,只要他们觉得有点用,就要整合进入rails安装包中,我删除rails的时候发现,里面居然有bootstrap这样的玩意!!!

Rails的core team每次引入新特性,他们都有足够的理由,而绝大部分的特性经历过一段时间洗礼后,都被我们开发者认同,像引入bundle去管理gem, assets pipline管理静态文件(甚至可以包成gem方便复用), sass去写css, coffeescript写js,restful, 这些都是让我们幸福得发慌的好特性,我以前搞PHP的时候,从来不知道web开发能这么的舒服。另外Rails从没什么胡乱继承一堆东西进来,像是4.0开始就会把很多有更好取代方案的东西废弃掉。至于楼主说的bootstrap问题,我自己一路以来情况从未见有集成过bootstrap的rails版本,还希望楼主多多求证再作结论。当然我们也不会刻意说什么这写特性就比django要好多少多少的,大家哲学本来就不同,我们喜欢拥抱变化和追求更新更好的解决方案,python还要解决到底用2还是3问题:)

“第三方包都有各自的开发者,他们没有统一的协调,每个人都按照自己的想法升级版本,rails集成这样的多的包,版本管理必然是噩梦”
相反地,bundle版本管理下这不但不是噩梦,而且在你项目有了测试下,升级gem基本上不会怎样的痛,而且,DRY原则下,github众多的gem包让我们幸福得发慌...

“如此多的依赖包,会让初学者不知所措,极大的影响项目本身的推广”
这是楼主说Ruby/Rails社区是小圈子的论据吧? 楼主觉得一个初学者上手框架,学习顺序是应该先了解框架的核心特性,还是先去学一堆依赖包插件什么的? Ruby/Rails的确中文资料不多,但Rubier更喜欢一手英文资料,所以能进圈子的都是自学能力和解决问题能力比较强的人(我所见,如不同意还请噗嗤一笑),讨论氛围也是我比较喜欢的(过去java,php...),我甚至有时觉得搞一些很基础的视频教学会拉低这个圈子的水平(个人意见),小圈子很好啊,小的力量是很大的。外国呢,github库数量好像第二主流语言就是ruby吧?

“作为一个有丰富经验的django开发者,我考虑再三还是继续使用django写网站 - java web开发者,可以尝试学习使用rails - 没有任何开发经验的开发者,建议学习php,有一定经验之后根据自己兴趣选择 - python程序员,完全不需要考虑rails”
总结也是很奇怪,前文有说为什么java web可以尝试使用rails吗? 还有php,还有python...文章看不出这总结的理由啊

我没有10年开发经验,我不觉得Rails比Django好很多很多,但我也很难说出Rails有什么地方让我觉得有噩梦般的地方,最后推荐楼主看一下Rails官方的guide,希望楼主这不是钓鱼软文,不然我就浪费了写文字的时间
twm
2012-12-01 14:35:29 +08:00
php框架Symfony2写的一个项目代码预览:https://github.com/tangwenming/Ghost
Keinez
2012-12-01 15:02:35 +08:00
挺会做推广的啊。几乎每个帖子都链一个链接到你的BLOG,半数帖子都在引起口水战,说什么好呢?
BigZ
2012-12-02 14:31:39 +08:00
@reducm 感谢你的回答,给这个帖子增加了很多价值
认知的差别来自于基本哲学的不同,我习惯于用简单的方法解决问题,偏好简介,任何一段文字如果还需要花时间去反复琢磨,我会立即厌倦的

1.生成器速度的问题,我虽然有很多mac设备,但是还是习惯在windows上开发,没有安装ssd的计算机,不会是1s的速度
2.如果代码分布在多个文件中,查找函数需要在多个文件中切换,其实很不方便
3.github库数量好像第二主流语言就是ruby吧?--这句话就是最好的论据,github当初为了rails而生,2年不到就被nodejs干趴了,就是因为nodejs配置足够简单,你作为一个rails熟手是难以体会 新人面对未知事物的恐惧
4."总结也是很奇怪"--可能表述不详细,大家有误解,我的结论是

ruby/rails是比所有python web框架更完善的web开发工具,但并不完美,和django对比,rails没有压倒性的优势,反倒有让人很不爽的地方
fwee
2012-12-02 15:22:37 +08:00
原来是lz写的啊。。10年就这水平。。真是。。
zhy0216
2012-12-02 15:39:19 +08:00
@hepochen "因为之前下面带过类似的同事,能做事,踏实靠谱,但是在我的世界中属于不够聪明的一类人;实际管理中还必须要夸他聪明,强烈的需要得到认同。时间越久,感觉距离就越远。当然,人家也混得不错。"
这话说的重了了吧... 甚至觉得带有人生攻击的意思... 个人感觉啊...
我觉得讨论问题归讨论问题, 最好不要涉及对个人的评价吧.
hyq
2012-12-02 17:43:17 +08:00
@BigZ 就现在看来,ruby for windows实在是很慢,不是ssd能解决的问题,如果楼主你坚持用windows,甚至服务器也用windows,你根本不用写这篇文章,因为ruby真不适合你....
goofansu
2012-12-02 18:41:23 +08:00
写ruby用windows不是找虐嘛
BigZ
2012-12-03 10:40:20 +08:00
@goofansu 因为windows确实好用,用的习惯
greatghoul
2012-12-05 19:53:02 +08:00
@BigZ rails 在 windows 下面就是水。

Rails是好东西,这点是肯定的。

至于和 django 比较,我觉得是全看个人喜恶了,我是 python 开发人员,但是仍然不喜欢 Django,而是倾向于 Flask 和 Web.py ,甚至 Uliweb 也很赞。我想这完全是个人喜好。

Ruby 和 Python 争吵是常有的事,我觉得这样挺好,只是不是人身攻击,对双方都有益处。

> 2.如果代码分布在多个文件中,查找函数需要在多个文件中切换,其实很不方便

这个我看不懂,Django 难道代码都混在一起吗?我想如果你用 RubyMine,会觉得查找函数简直不是个问题,当然,如果你是 vim 党, vim-rails 也绝对会让rails很方便。
还是我对这句话本身理解有误?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/53692

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX