新手问题 使用 Ruby 做网站你们有用 Rails 或者是 ORM 吗?

jesse · 2015年05月13日 · 最后由 jesse 回复于 2015年05月14日 · 2255 次阅读

几年前我还没毕业的时候,用过 CakePHP 写过一个网站,当时没怎么接触 Ruby,给我的映像是: 1.性能非常低下,在一个表内有十几万数据,在只取一条的时候非常慢,我通过源码找到 Cake 的实现方式尽然是全部取出,没有 LIMIT,然后再取一行。 2.稍微复杂一点的 SQL 实现上,ORM 完全没办法做到,而 Cake 不能用原生的 SQL 查询,只能用蹩脚的钩子来实现,以至于后来只好抛弃不用。 3.表的单复数映射,搞一个 person,尽然要写成 people,搞得我老是在单复数上折腾!

这 3 点在我幼小的心里留下很严重的心里阴影,因为 Cake 是严重模仿 Rails 的,所以虽然接触 Ruby 有一段时间了,也仅是用来写一些简单的脚本,没有接触 Rails,惧怕那个单复数的映射规则,以及 ORM 的笨拙,最近想用 Ruby 搭建一个网站,想问问大家实际项目中都是用 Rails 的 ORM 来实现的吗?用的感觉怎么样?有没有我说的这些问题了呢?

不会搜索,不会翻看 Ruby China 的帖子么? 如果你有在尝试用用看,或许我还会给你说说

1:显然是你代码的问题,比如 CakePHP 的 find 方法的参数不对,或者数据库没索引,或者没按主键查。一定是你的问题,毕竟 CakePHP 有大规模的项目. 2:CakePHP 和 Rails 都能做到复杂的 SQL 查询。cakephp rails 3:单复数是个简单的符合直觉的问题。

给你的建议是,作为新手,多看看文档,出了问题先怀疑自己,学习新东西的时候先抛弃成见和以前的知识。

怎样让你的问题得到答复? 选择一个女生头像

楼主先从 sql 开始学习吧。sql 的查询性能第一优化规则:减少字段输出。rails 的 orm activerecord 默认呢是 select * 的,首先这样肯定在大表场景下会速度慢,其次对于关系绑定,无论是延迟加载还是一次加载,一旦没有字段过滤,都是速度慢的。activityrecord 没那么智能,还帮你过滤字段。大部分场景建议楼主不要过分依赖 rails 提供的对象关联来获取数据,而是自己编写对应的接口,利用 activityrecord 对 sql 的那层友善的接口封装构造 sql 语句,这样速度就快了。

虽然没有实际用过 CakePHP,但是感觉 CakePHP 不可能这么愚蠢,估计是你的用法有问题

在一个表内有十几万数据,在只取一条的时候非常慢,我通过源码找到 Cake 的实现方式尽然是全部取出,没有 LIMIT,然后再取一行

我想知道你是什么时候毕业的。。。虽然没用过 Cake,但是用过 Laravel,Laravel5 以前也是仿 Rails 的,对于 ORM 不能写原生 sql 我还是无法置信。。。

#3 楼 @cqcn1991 嗨,我注册的时候 随便弄的头像,网站有 bug 现在改不了,我试过几次了,不能怪我骗回复吧?这个头像一看就是网上找的。

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