该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-18
火星叔叔马丁 写道 night_stalker 写道 不是流氓 写道 我没维护过rails项目!但是rails的代码要比Java的难读,而且难跟。 其实批评者基本都不懂,纯粹来凑热闹。 嗯 我发现这贴欢乐了 一句话 认真你就输了 我还真输了 我很想请教下前辈,rails有没有所谓的逻辑层,传说中的业务逻辑写在哪里?controller还是model? 这个没其他意思,因为我是真的遇到这个问题了! |
|
返回顶楼 | |
发表时间:2009-06-18
ray_linn 写道 night_stalker 写道 现在比较强大的第三方 ORM 有 Sequel,DataMapper …… 还有各种改造版本的 ActiveRecord。
不过 ActiveRecord 历史悠久,名声卓著,很少人用别的 ORM —— 但不说明其它 ORM 比 ActiveRecord 差,相反 ActiveRecord 的很多做法都算比较土的了 …… 专门用途的譬如连接 Kyoto Cabinet 或者 Couch 或者 DataStore 的小小 ORM 更多了。 俺想问的在rails里把activerecord改成别的orm是否是很easy捏?当然不是那些脱胎自activerecord的进化版 在rails里把AR换成DM的步骤: 1. 修改environment.rb # 取消对AR的依赖 config.frameworks -= [:active_record] # 声明对DM的依赖: require 'datamapper' # 加载自己写的model文件,如多个,用Dir.glob循环加载 require 'models/my_model.rb' ... # 连接数据库 DataMapper.setup(:default, "连接字符串或Hash") 收工。 AR、DM都提供了接近无缝切换数据库的能力,这点跟hibernate差不多。 night_stalker 写道 其实批评者基本都不懂,纯粹来凑热闹。
这种情况持续几年了,这次仍不例外 |
|
返回顶楼 | |
发表时间:2009-06-18
ray_linn 写道 俺想问的在rails里把activerecord改成别的orm是否是很easy捏?当然不是那些脱胎自activerecord的进化版 代码中用到 ActiveRecord 的类,一般都是这样: class Post < ActiveRecord::Base ... end 换成别的 ORM,就把 < ActiveRecord::Base 去掉,再把载入 ActiveRecord 的 config 选项去掉差不多了 …… 如果是维护代码,某些 CRUD 可能不一样,你可以写个和 AR 相似的 facade module 让它 include,或者就直接往下修改吧。我能想出 n 种方法 …… 甚至 stub 一个 ActiveRecord::Base …… 当然直接弹出个设置窗口让你选择 ORM 框架的方法是没有 …… |
|
返回顶楼 | |
发表时间:2009-06-18
最后修改:2009-06-18
liusong1111 写道 在rails里把AR换成DM的步骤: 1. 修改environment.rb # 取消对AR的依赖 config.frameworks -= [:active_record] # 声明对DM的依赖: require 'datamapper' # 加载自己写的model文件,如多个,用Dir.glob循环加载 require 'models/my_model.rb' ... # 连接数据库 DataMapper.setup(:default, "连接字符串或Hash") 收工。 AR、DM都提供了接近无缝切换数据库的能力,这点跟hibernate差不多。 这是因为AR和DM都是rails 3的一部分,如果不是rails的orm呢? 我说的是,java的情况是因为jdo, hibernate,ejb都是独立发展起来的东西,最后不得不用spring来把所有的东西集成起来,这导致最后java web又肥又大。 用rails来批评java web是不厚道的。。。 理论上java web快捷之道是可以借助大量的代码生成来完成的。。。。(不过我一直觉得很搞笑的是,我的应用才5m大,却带了150多m的框架) |
|
返回顶楼 | |
发表时间:2009-06-18
最后修改:2009-06-18
ray_linn 写道 这是因为AR和DM都是rails 3的一部分,如果不是rails的orm呢? 我说的是,java的情况是因为jdo, hibernate,ejb都是独立发展起来的东西,最后不得不用spring来把所有的东西集成起来,这导致最后java web又肥又大。 用rails来批评java web是不厚道的。。。 其他几个回的和我要表达的风马牛不相及 远在rails1.x的时候切换到DM都是这样做的,跟rails3没有半点关系,有一篇07的文章作证: http://bustoutsolutions.com/blog/2007/09/17/getting-started-with-datamapper-and-rails/ |
|
返回顶楼 | |
发表时间:2009-06-18
不是流氓 写道 我很想请教下前辈,rails有没有所谓的逻辑层,传说中的业务逻辑写在哪里?controller还是model? 这个没其他意思,因为我是真的遇到这个问题了! 一般写在 model,不满意就新建一个非持久的类。再不爽就新建一个目录名叫 logic,在 config 里 rquire 它就行了 …… 当然弹出一个对话框让你选择“逻辑层”的方法也是没有 |
|
返回顶楼 | |
发表时间:2009-06-18
最后修改:2009-06-18
night_stalker 写道 ray_linn 写道 俺想问的在rails里把activerecord改成别的orm是否是很easy捏?当然不是那些脱胎自activerecord的进化版 代码中用到 ActiveRecord 的类,一般都是这样: class Post < ActiveRecord::Base ... end 换成别的 ORM,就把 < ActiveRecord::Base 去掉,再把载入 ActiveRecord 的 config 选项去掉差不多了 …… 如果是维护代码,某些 CRUD 可能不一样,你可以写个和 AR 相似的 facade module 让它 include,或者就直接往下修改吧。我能想出 n 种方法 …… 甚至 stub 一个 ActiveRecord::Base …… 当然直接弹出个设置窗口让你选择 ORM 框架的方法是没有 …… right,正解。 我想现在即使再出现ruby orm框架,大家也会考虑尽量facade到AR里去,而不是象JDO与Hibernate那样差别巨大。 |
|
返回顶楼 | |
发表时间:2009-06-18
楼主应该再探讨一下为什么java没有sinatra,pony,rest-client
|
|
返回顶楼 | |
发表时间:2009-06-18
ray_linn 写道 我想现在即使再出现ruby orm框架,大家也会考虑尽量facade到AR里去,而不是象JDO与Hibernate那样差别巨大。 你这个需求比较奇怪,既要用新 ORM,又不能改代码 …… 正常来说没人会这么想的,大部分人一开始选好框架就不换了。想中途换 ORM 框架的,目的基本都是想要大量重构让代码变得 pp …… 我觉得新框架出现的原因是:这些人对 AR 的写法存在不满 …… 如果不是为了让代码写起来更 pp,我才不把 AR 换掉呢。 |
|
返回顶楼 | |
发表时间:2009-06-18
night_stalker 写道 ray_linn 写道 我想现在即使再出现ruby orm框架,大家也会考虑尽量facade到AR里去,而不是象JDO与Hibernate那样差别巨大。 你这个需求比较奇怪,既要用新 ORM,又不能改代码 …… 正常来说没人会这么想的,大部分人一开始选好框架就不换了。想中途换 ORM 框架的,目的基本都是想要大量重构让代码变得 pp …… 我觉得新框架出现的原因是:这些人对 AR 的写法存在不满 …… 如果不是为了让代码写起来更 pp,我才不把 AR 换掉呢。 新近的ORM代表有啥。。。。俺一直想C# 4.0之后,很有可能为C#其写一个AR,而不需要nhibernate. |
|
返回顶楼 | |