想请教你们为何选择 rails

2014-09-20 18:45:32 +08:00
 jacob

我最近想xue web后端开发,然后听说rails 高端 大气 上档次,开发效率高,ruby又讲究以程序员为本,就了jie了一下。

que发现几个疑问,

一个是rails更新快,各种gem更新也快。

更新快能否说明不够成熟,稳定呢?而且貌似测试用rspec的多,结果我发现rails作者说rspec已死,这。。。

二是资料少,

当然我英语还凑合能看英文书,但还是jue得资料太少了,搜点东西,stackoverflow就冒出来了,而别的语言大部分是blog内容。

三是部署成本高。

我不知道这玩意咋部署的,要啥环境。听说了heroku,我注册了看过,当时吓的我捂紧了钱包。

vps也不便宜,我估计一般的vps怕是不行吧,好点得也忒贵了。

也没听说国内哪个大网站用rails开发的,当然我看过一个牛人的个人站是ror的,很好的站。

真诚求教,你们选择了ror的原因是什么。

6492 次点击
所在节点    Ruby on Rails
28 条回复
roamlog
2014-09-20 19:07:16 +08:00
1)这就是 Rails 的特点,也是它成功的原因之一,如果你不接受这一点就最好别用,不然会很痛苦。

2)资料相对其他语言来说确实不算多,搜出来 so 的内容不是很正常吗?而且也更好啊,blog 内容很多时候反而不好。

3)一台 vps 而已,这哪里难了?你折腾其他语言也得有台 vps 啊。
xp0729
2014-09-20 19:12:57 +08:00
我能说是因为非科班出身完全不懂c,java之类的然后觉得物以稀为贵不想学大流准备在Python和ruby中挑一个最后发现ruby-china感觉很对胃口最最后机缘巧合找了个rails的工作么........
xp0729
2014-09-20 19:14:39 +08:00
顺便吐槽一下楼主说的问题其实都不是什么问题.....选择了,然后坚持下去准没错
damajia
2014-09-20 19:14:55 +08:00
已放弃的飘过

我是经过自身近1年半的实践才放弃的,所以不要人云亦云。
lightening
2014-09-20 19:17:50 +08:00
开发速度特别快。Rails 帮你解决了大量问题。引入了 Migration, asset pipeline 等概念非常超前。研究 Django 的时候经常在想,DHH 怎么这么牛逼,2007 年就能设计出这么完善的框架。Rails 出现后,几乎所有语言都出现了深受 Rails 影响的框架。但就我所知道的 Django 来说,直到最近的 Django 1.7 才引入 migration,而且还残缺不全……

关于你发现的几个问题:
1. 如果你说的稳定是指不再加入新 feature 的话,那么 Rails 确实不够稳定。不过 Ruby 社区的文化就是这样,比较喜欢追求新东西。DHH 是个非常偏激的人,他就喜欢 Ruby 的内建测试框架 Test::Unit。你可以自己选用 RSpec 还是 Test::Unit。
2. Rails 资料少确实是一个问题。一方面是因为比较新,另一方面是因为入门难一点。Rails 是一个大而全的框架,都学一遍要花不少时间。
3. 用普通的 VPS 就可以部署了。看一下 Capistrano 这个 gem。Heroku 收费挺高的,而且限制比较多,不过省心省力,如果你项目人数很少没有精力维护服务器,Heroku 还是挺好的。
roamlog
2014-09-20 19:20:25 +08:00
话说,lz 好像多次在 V2EX 抱怨 Rails 了,我觉得学 Ruby 和 Rails 应该是一个快乐的过程,如果弄得这么痛苦了,可能 Ruby 和 Rails 不一定适合你,也许可以考虑去弄点别的。。。
msg7086
2014-09-20 19:35:13 +08:00
heroku太贵了用不起。

rails的VPS的话我现在用linode 1024跑一个很小的类博客站,30万帖子,每天60万动态请求,CPU平均占用在10%以下。nginx+unicorn+redis+mariadb。

rspec我觉得挺好。我这边用rspec+capybara做集成测试,感觉很舒服。

ROR的特点就在于快速开发。想想吧,开发一个网站系统只需要一星期而且可以保证逻辑上基本bug free,这得节约多少钱。这年头服务器比程序员便宜多了……
msg7086
2014-09-20 19:38:42 +08:00
至于大型网站不用ROR,道理也简单。一来系统大了以后,ROR的模式就不适用了。一来国内程序员很便宜,服务器反而很贵,直接造成了多招程序员少堆服务器的后果。

ROR跑到很高的量以后就会渐渐出现瓶颈。如果没有强大的架构师支持的话,最简单的方法还是逐步迁移到其他平台上去。推特就是妥妥转去scala了。(其实scala比ruby更小众

ROR最大的优势还是快速起步。一个公司刚起步做开发,如果一套系统要做个一年半载的,怎么混啊。还不如弄一堆gem花一个星期堆起一个原型再说。等原型做大了,钱挣多了,系统撑不住了,再换就是了。
jacob
2014-09-20 19:45:11 +08:00
@roamlog 没有吧,我只发过2个关于rails的帖子,上次是说镐头书,让你有这种想法真的挺不好意思,我有点强迫症倾向,又有哪个东西能完美呢

@lightening
感谢这么用心的回答,经你一说我就放心了,毕竟水平不够看不出好,但能体会到有很多封装好的方法很方便,gem和rake也能省去不少无聊的操作。 Migration, asset pipeline ,因为我不知道别的语言怎么操作数据库的和静态文件的,竟然错把好处当平常了。。。
WildCat
2014-09-20 19:48:39 +08:00
roamlog
2014-09-20 19:49:11 +08:00
@jacob 现在中文书有一本新的了,你可以考虑一下
zhs227
2014-09-20 19:51:19 +08:00
给客户陆陆续续做Rails项目快一年了,中文资料少确实是一个问题。不愿意看英文的话,Rails很痛苦。如果语言不是问题,Rails用起来就太理想了。

关于版本匹配的问题,在Gemfile中可以指定要求的Gem版本号。对于维护系统来说问题不太大。现在搭好环境,Rails 2.x的还能跑起来。

国外使用Rails的人太多了,基本上什么问题找两个关键词一搜就会导出到stackoverflow,Google就会准确的命中你要的那一条,最多第二条第三条,一般都好用。
当然有的用法是手册上找不到的,最好把它记下来,方便下次使用。


部署的话,一般的VPS都可以搞定的。当然比PHP这种传上去就用的要复杂点。
msg7086
2014-09-20 19:56:23 +08:00
Migration和Assets都很好用。而且又因为Ruby本身的语言特性就决定了这货写DSL简直神一样,所以写一些奇怪的东西完全就不会感到不顺手。

比如laravel里的ORM,
$user = DB::table('users')->where('name', 'John')->first();
而ActiveRecord里
user = User.where(:name => 'John').first
怎么看也是后者比较舒服。

Rails用了很多Ruby的黑科技,而其他的语言很难做到如此灵活。就算是简洁优雅的laravel也没有办法把那些必须的语言元素(DB::table())省略掉。
WildCat
2014-09-20 21:11:04 +08:00
@msg7086
Laravel可以 User::where('name', 'john')->first() 的
msg7086
2014-09-20 21:29:23 +08:00
@WildCat 双冒号和箭头的使用就能让人疼很久
hustlzp
2014-09-20 21:41:40 +08:00
之前接到过一个外包,1个月的时间,临时起意用RoR,踩了不少坑...

不过感觉理念确实很赞,但对于个人来说,还是喜欢Python Flask~
xiparos
2014-09-21 05:37:42 +08:00
资料少?stackoverflow 正好说明有人踩过坑,不太懂英文的敢说资料少?
msg7086
2014-09-21 06:17:24 +08:00
除了爆栈网以外,如果日语好的话也可以直接看日语资料啊
zeinimei
2014-09-21 08:06:38 +08:00
PHP是最好的语言
当然我学的是ROR
ahr0u
2014-09-21 08:26:58 +08:00
@hustlzp 我接触过Flask和Rails,刚开始的时候也的确更喜欢Flask,接触不深有个问题想请教下,在安全上,我了解的是Rails作为非常成熟的框架,其安全上面的考虑是做得很多的,譬如常见的跨域攻击等都有相应的防护手段,虽然说安全与否看程序员个人,但Rails这方面无疑更省心一些,请问Flask在安全上面有那么周到的考虑吗?

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

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

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

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

© 2021 V2EX