`
dreamhead
  • 浏览: 43128 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Rails迷思导读

    博客分类:
  • ruby
阅读更多

DHH爆了,给置疑Rails的人一个回答,于是有了《Rails迷思 》这个系列。

 

  • 迷思1:Rails难于部属:DHH的答案是Phusion Passenger (也叫mod_rails),一站式服务。
  • 迷思2:Rails每天崩溃400次:DHH说,引起崩溃的是内存泄漏,不过,那是陈年旧帐了,现在好多了。但是,如同其它一切程序一样,内存泄漏还是有可能的。
  • 迷思3:Rails强迫人使用Prototype:不用在一棵树上吊死,DHH演示了如何在Rails中使用jQuery。这里他偷换了概念,Rails倒不是强迫人用Prototype,而是引导人用Prototype。你知道,大多数人是懒惰的。
  • 迷思4:Rails是一体的:DHH用了很大的篇幅说,其实没有那么“一体”。这是DHH版的Rails拆解指南。
  • 迷思5:Rails之难源于Ruby:Ruby不难,在用中学。
  • 迷思6:Rails只说英语:曾经,受Ruby牵连,如今,字符编码、国际化/本地化、时区样样精通。
分享到:
评论
15 楼 liusong1111 2008-12-08  
http://www.yeeyan.com/articles/view/andyhu1007/18946?tag_related
http://yehudakatz.com/2008/11/15/mythbusting-rails-is-not-a-monolith/

DHH列出rails自身代码行数并大夸其设计优雅性,看起来就是在跟merb较劲. 从后面blog的回复,merb必然大比分胜出.
别的不说,DHH在文中大大夸了一番alias_method_chain,着实雷了咱一把.
rails的alias_method_chain源码:
http://github.com/rails/rails/tree/master/activesupport/lib/active_support/core_ext/module/aliasing.rb
对应merb extlib这个gem中的hook:
http://github.com/sam/extlib/tree/master/lib/extlib/hook.rb

哦,merb在这一功能上的源码居然比rails多4倍! 还吹自己代码少?

冷静一下.

偶作为被alias_method_chain折磨过的人,能够体会到多出来的这些代码绝不是吃素滴. 虽然hook代码还不完美(还没有显式的对hooks进行CRUD以及recompile的API),也比前者强太多了.
14 楼 liusong1111 2008-12-08  
给koalant补充一下.
merb这个gem本身没有任何内容,只是声明了对其它gem的依赖.
gem install merb跟gem install rails一样,会把它的默认组成部分(一堆gem)都装上.
对普通用户来说,跟rails一样友好,同时不影响高端用户有选择的搭配定制.

安装完成,gems目录中merb-1.0.3/lib里只有一个文件merb.rb,内容如下:

### AUTOMATICALLY GENERATED. DO NOT EDIT!
require 'merb-core'
require 'merb-more'
require 'dm-core'
require 'do_sqlite3'
require 'dm-timestamps'
require 'dm-types'
require 'dm-aggregates'
require 'dm-migrations'
require 'dm-validations'
require 'dm-sweatshop'


从第4行开始相当于dm-more.

其中merb-more也只是依赖了一堆gem, gems/merb-more-1.0.3/lib/merb-more.rb:
### AUTOMATICALLY GENERATED. DO NOT EDIT!
require 'merb-action-args'
require 'merb-assets'
require 'merb-slices'
require 'merb-auth'
require 'merb-cache'
require 'merb-exceptions'
require 'merb-haml'
require 'merb-helpers'
require 'merb-mailer'
require 'merb-param-protection'
require 'merb_datamapper'


一旦环境搭好了,只要有足够的书籍资料,谁还关心它的功能是由哪部分提供的呢? java程序一般也有一堆jar文件,不也挺好的?

我更激进一点,认为merb有潜力取代rails成为"主流".
长远看来,背着历史包袱的rails可改进的余地已经不多了,merb的出现,也让它没有了重写的必要.
它拥有的,是成熟的现在,却没有未来.
好的情况是,不管merb还是rails,两者差异不大,对于其它编程语言来说,都有学习参考价值,ruby世界前途不错.


13 楼 koalant 2008-12-07  
引用

Successfully installed merb-1.0 
Successfully installed merb-core-1.0   
Successfully installed merb-action-args-1.0  
Successfully installed merb-assets-1.0  
Successfully installed merb-slices-1.0  
Successfully installed merb-auth-core-1.0  
Successfully installed merb-auth-more-1.0  
Successfully installed merb-auth-slice-password-1.0  
Successfully installed merb-auth-1.0  
Successfully installed merb-cache-1.0  
Successfully installed merb-exceptions-1.0  
Successfully installed merb-gen-1.0 
Successfully installed merb_datamapper-1.0  
Successfully installed merb-more-1.0
Successfully installed merb-haml-1.0  
Successfully installed merb-helpers-1.0  
Successfully installed mailfactory-1.4.0  
Successfully installed merb-mailer-1.0  
Successfully installed merb-param-protection-1.0  

Successfully installed dm-core-0.9.6  
Successfully installed dm-migrations-0.9.6  
Successfully installed dm-timestamps-0.9.6  
Successfully installed dm-types-0.9.6  
Successfully installed dm-aggregates-0.9.6  
Successfully installed dm-validations-0.9.6  
Successfully installed dm-sweatshop-0.9.6  
Successfully installed do_sqlite3-0.9.6-x86-mswin32-60  
Successfully installed data_objects-0.9.6  

Successfully installed addressable-1.0.4  
Successfully installed haml-2.0.4  
Successfully installed uuidtools-1.0.4  
Successfully installed randexp-0.1.4  
Successfully installed highline-1.5.0  
Successfully installed diff-lcs-1.1.2  
Successfully installed templater-0.3.5  
Successfully installed ZenTest-3.11.0  
Successfully installed RubyInline-3.8.1  
Successfully installed sexp_processor-3.0.0  
Successfully installed ParseTree-3.0.2-x86-mswin32-60  
Successfully installed ruby2ruby-1.2.1 


我重新排列了一下上次你安装 merb 的那40个 gems,分为三个部分,第一部分是它自己的 gems, 第二部分属于 dm ,第三部分都是所需的第三方 gems, 比如 haml,ZenTest 等等, 总的来说,它自身的 gems 应该保持在10来个左右,而且新版本有可能继续缩小gems 的数目,这其中很多merb 自身的 gems 都是包装第三方功能的,都很小,比如 merb-1.0  ,merb-haml-1.0,merb_datamapper-1.0 。

merb 按照它自己 description 的说法 就是

merb = merb-core + merb-more + datamapper

merb 好像现在也在整理自己的模块,不排除未来模块数能减少一些。


不过我也承认,Merb 不会成为主流的 ruby web 框架, rails 将吸引大多数人的眼球。

12 楼 robbin 2008-12-07  
merb的模块化分的过细,一装60多个gem。对喜欢自己DIY压榨框架到极限的程序员来说固然很爽,但是对于大多数只想干活的程序员来说,这是很不人道的事情,我真的不想搞清楚你60多个gem每个干吗用的,我应该如何组合这些gem,这对我来说是一个很大的学习成本,就这一点来说,merb就不可能流行,它会成为一个更小众的web快速开发框架。说到性能问题,ruby 1.9.1马上就出来了,已经改成了bytecode,merb在这方面不会有什么明显的优势。事实上我认为merb最大的价值在于迫使Rails开发团队特别是DHH能够倾听社区用户的声音,改进的更快更好。

11 楼 koalant 2008-12-07  
其实 merb 的 plugin 没有重新设计一套,而是利用了 gems ,这也是它的一个特点, 这样就利用了 gems 的版本依赖, rails plugin 好像不能解决版本依赖。只要知道如何写 gems 就会很容易写 merb 的 plugin

Rails 有个缺点,就是 monkey pathching 和 DSL 的东西太多,这样就容易造成总是充满新奇的东西,到处充满奇技淫巧, 你怎么都学不完的,比较累人。Merb 在这点上控制的比较好。
10 楼 arkxu 2008-12-07  
koalant 写道
火星叔叔马丁 写道
koalant 写道
我还是看好 Merb, 相信明年越来越多基于 Ruby 的 web 开发人员会从 rails 转向 merb 的. 不过即便在将来使用 Merb 的人还是少数。


Merb资料看过少许 能不能说说你看好Merb的理由


很多都是我个人感觉。

merb 的性能当然是一个原因,尤其是它能超过 Django 的确很让我惊奇,毕竟这是让整个 RUBY 社区兴奋的事情, 至少 Ruby 解释器的速度不再说明 ruby 框架也很慢了。

slice 也是一个很吸引人的地方, RAILS 一直不提供这个功能。

模块化 是 Merb 的一大特点 ,orm, javascript, template 中立,你可以选取任何模块用,不象 RAILS 那样 take or leave.

推荐大家看看
http://www.youtube.com/watch?v=TcMklv40YMY

Merb 创始人自己做了一些解释,Merb 的理念之一是: “no code is faster than no code”, 因为 Ruby 不是基于 Bytecode 的虚拟机,代码转换为语法树,然后 AST WALKER 在上面执行代码,所以如果代码越大,那么生成的语法树就很大,遍历起来就慢,执行也就越慢,因此 Merb 开发组极力通过减小代码大小来做性能优化,产生的副作用就是框架代码的文件都非常短小。 你如果看过 Merb 代码就知道,它里面很少有超过几百行代码的文件,我想这大概就是原因。 Merb 代码写的也非常易懂。

rspec 代替 test_unit, 生成的应用代码中默认带了 .gitignore , autotest 等等, 可以说, Merb 吸取了很多框架的教训,增加了很多改善的地方,有些地方 rails 想改,但是却很难改了,但是对 merb 来说很容易加入。

另外 Datamapper 一直是我想用的一个 ORM, 它的性能很好,国外的一些测试表明: merb + dm 要比 merb + activerecord 好,主要原因是 DM 团队有自己开发的数据库驱动 do_* 系列,据他们自己说,如果其他 ORM 不采用他们开发的 do 驱动就永远别想在性能上超过他们,这话很狂啊,呵呵。






merb 的plugin 太少了 ;)
9 楼 koalant 2008-12-06  
火星叔叔马丁 写道
koalant 写道
我还是看好 Merb, 相信明年越来越多基于 Ruby 的 web 开发人员会从 rails 转向 merb 的. 不过即便在将来使用 Merb 的人还是少数。


Merb资料看过少许 能不能说说你看好Merb的理由


很多都是我个人感觉。

merb 的性能当然是一个原因,尤其是它能超过 Django 的确很让我惊奇,毕竟这是让整个 RUBY 社区兴奋的事情, 至少 Ruby 解释器的速度不再说明 ruby 框架也很慢了。

slice 也是一个很吸引人的地方, RAILS 一直不提供这个功能。

模块化 是 Merb 的一大特点 ,orm, javascript, template 中立,你可以选取任何模块用,不象 RAILS 那样 take or leave.

推荐大家看看
http://www.youtube.com/watch?v=TcMklv40YMY

Merb 创始人自己做了一些解释,Merb 的理念之一是: “no code is faster than no code”, 因为 Ruby 不是基于 Bytecode 的虚拟机,代码转换为语法树,然后 AST WALKER 在上面执行代码,所以如果代码越大,那么生成的语法树就很大,遍历起来就慢,执行也就越慢,因此 Merb 开发组极力通过减小代码大小来做性能优化,产生的副作用就是框架代码的文件都非常短小。 你如果看过 Merb 代码就知道,它里面很少有超过几百行代码的文件,我想这大概就是原因。 Merb 代码写的也非常易懂。

rspec 代替 test_unit, 生成的应用代码中默认带了 .gitignore , autotest 等等, 可以说, Merb 吸取了很多框架的教训,增加了很多改善的地方,有些地方 rails 想改,但是却很难改了,但是对 merb 来说很容易加入。

另外 Datamapper 一直是我想用的一个 ORM, 它的性能很好,国外的一些测试表明: merb + dm 要比 merb + activerecord 好,主要原因是 DM 团队有自己开发的数据库驱动 do_* 系列,据他们自己说,如果其他 ORM 不采用他们开发的 do 驱动就永远别想在性能上超过他们,这话很狂啊,呵呵。




8 楼 koalant 2008-12-06  
我还是看好 Merb, 相信明年越来越多基于 Ruby 的 web 开发人员会从 rails 转向 merb 的. 不过即便在将来使用 Merb 的人还是少数。
7 楼 dlee 2008-12-06  
<div class='quote_title'>dreamhead 写道</div>
<div class='quote_div'>
<p>DHH爆了,给置疑Rails的人一个回答,于是有了《<a href='http://www.loudthinking.com/posts/29-the-rails-myths'>Rails迷思</a>
》这个系列。</p>
<p> </p>
<ul>
<li>
迷思1:Rails难于部属:DHH的答案是<a href='http://www.modrails.com/'>Phusion Passenger</a>
(也叫mod_rails),一站式服务。</li>
<li>迷思2:Rails每天崩溃400次:DHH说,引起崩溃的是内存泄漏,不过,那是陈年旧帐了,现在好多了。但是,如同其它一切程序一样,内存泄漏还是有可能的。</li>
<li>迷思3:Rails强迫人使用Prototype:不用在一棵树上吊死,DHH演示了如何在Rails中使用jQuery。这里他偷换了概念,Rails倒不是强迫人用Prototype,而是引导人用Prototype。你知道,大多数人是懒惰的。</li>
<li>迷思4:Rails是一体的:DHH用了很大的篇幅说,其实没有那么“一体”。这是DHH版的Rails拆解指南。</li>
<li>迷思5:Rails之难源于Ruby:Ruby不难,在用中学。</li>
<li>迷思6:Rails只说英语:曾经,受Ruby牵连,如今,字符编码、国际化/本地化、时区样样精通。</li>
</ul>
</div>
<p> </p>
<p>Zed Shaw自从与DHH翻脸之后似乎总是与DHH过不去,上个月他在自己的blog中指名道姓对DHH在《The Rails Myths》中的观点进行了反驳:</p>
<p><span style='text-decoration: underline;'>http://www.zedshaw.com/blog/index.html</span></p>
6 楼 不是流氓 2008-12-05  
我想任何人都是这样吧,你写的东西,被人骂的一塌糊涂,你会怎么想?
说你的东西一文不值,你会怎么想?
骂你的东西烂的要命,怎么办?
4 楼 nan1nan1 2008-11-17  
一般DHH都不怎么回应,不知道这次一下答了这么多,是不是跟merb 1.0有关系。
良性竞争很好呀。
3 楼 fnet 2008-11-17  
貌似只有迷思3吧,是robbin发的新闻
2 楼 liuqiang 2008-11-17  
JE新闻频道上已经有了这个系列……
1 楼 alang 2008-11-17  
有没有谁有兴趣翻译?

相关推荐

    Rails 101 入门电子书

    ### Rails 101 入门电子书知识点详解 #### 一、简介 《Rails 101 入门电子书》是一本非常适合初学者直接入门的书籍,它由xdite编写并出版于2014年6月10日。本书主要针对的是希望学习Ruby on Rails框架的读者,特别...

    Rails101_by_rails4.0

    《Rails101_by_rails4.0》是一本专注于Rails 4.0.0版本和Ruby 2.0.0版本的自学教程书籍,它定位于中文读者,旨在成为学习Rails框架的参考教材。Rails(Ruby on Rails)是一个采用Ruby语言编写的开源Web应用框架,它...

    Rails项目源代码

    Ruby on Rails,通常简称为Rails,是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式。这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何...

    关于rails 3.1 cucumber-rails 1.2.0

    Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其对于Ruby on Rails框架的测试和自动化流程。本文将深入探讨这两个组件,以及它们如何协同工作来增强软件开发的效率和质量。 首先,...

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    ### Ruby on Rails Guides v2 - Ruby on Rails 4.2.5 #### 一、重要概念及基础假设 - **重要概念**:本指南旨在帮助读者深入理解Ruby on Rails(以下简称Rails)4.2.5版本的核心功能与最佳实践。 - **基础假设**:...

    rails2-sample

    从给定的文件信息来看,我们正在探讨的是一本关于Ruby on Rails的书籍,书名为《Simply Rails2》,作者是Patrick Lenz。本书旨在为初学者提供深入理解Ruby on Rails框架的指南,从基础概念到高级主题均有涵盖,是...

    rails指南 中文版

    Rails指南中文版是针对Ruby on Rails框架的一份详尽教程,旨在帮助开发者深入理解并熟练掌握这个强大的Web应用开发工具。Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-...

    使用Aptana+Rails开发Rails Web应用(中文)

    在开发Web应用时,Ruby on Rails(简称Rails)框架因其高效、简洁的代码风格和强大的社区支持而备受青睐。Aptana是一款强大的集成开发环境(IDE),尤其适用于Rails项目的开发,它提供了丰富的特性来提升开发效率。...

    Rails

    标题 "Rails" 指的是 Ruby on Rails,一个开源的Web应用程序框架,它基于Ruby编程语言,遵循MVC(模型-视图-控制器)架构模式。Rails由David Heinemeier Hansson在2004年创建,其设计理念是强调代码的简洁性、DRY...

    Ruby on Rails安装指南(Ruby 1.8.6+Rails 2.0.2)

    Ruby on Rails 安装指南 Ruby on Rails 安装指南是指安装 Ruby 1.8.6 和 Rails 2.0.2 的详细步骤。首先,需要下载 Ruby One-Click Installer 版本,并安装 Ruby。然后,下载 Rails 2.0.2 版本,并安装。接下来,...

    [Rails] Crafting Rails Applications (英文版)

    [Pragmatic Bookshelf] Crafting Rails Applications Expert Practices for Everyday Rails Development (E-Book) ☆ 图书概要:☆ Rails 3 is a huge step forward. You can now easily extend the framework, ...

    rails 2.3.2离线安装rails 2.3.2离线安装

    rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails ...

    Rails recipes

    Rails Recipes是一本针对Ruby on Rails框架的实用书籍,它收集了一系列高效解决问题的技巧和方法,也被称为“Rails开发者的宝典”。作者们通过分享自己的经验和见解,为Rails程序员提供了一本既有实际操作指导又有...

    rails敏捷开发的购物车系统

    在本文中,我们将深入探讨如何使用Rails敏捷开发技术构建一个购物车系统,特别是在参考《rails敏捷开发第四版》中的示例。Rails 3.2.6是本文的基础框架,它是一个强大的Ruby Web应用程序框架,以其MVC(模型-视图-...

    rails 项目起步示例

    Rails是Ruby语言的一个著名Web开发框架,全称为Ruby on Rails,它遵循MVC(Model-View-Controller)架构模式,旨在提高开发效率和代码可读性。本示例"rails项目起步示例"是一个购物系统,非常适合初学者入门学习。 ...

    中文版rails教程

    **中文版Rails教程** Rails,全称为Ruby on Rails,是一个基于Ruby编程语言的开源Web应用程序框架,遵循MVC(模型-视图-控制器)架构模式。Rails以其“约定优于配置”(Convention over Configuration)和“Don't ...

    rails2.3.2

    标题 "rails2.3.2" 指的是 Ruby on Rails 框架的一个特定版本,即 2.3.2。Ruby on Rails(通常简称为 Rails)是一个基于 Ruby 语言的开源 Web 应用程序框架,它遵循 Model-View-Controller (MVC) 设计模式,用于构建...

    rails本地安装包完整版

    Rails是Ruby编程语言的一个著名框架,用于开发Web应用程序。它以MVC(模型-视图-控制器)架构模式为基础,提供了许多内置功能,使开发者能够更高效地编写代码。在这个"rails本地安装包完整版"中,包含了Rails 2.1.0...

    component base rails applications

    本书《Component-Based Rails Applications》主要介绍了如何使用Rails引擎(Rails Engine)进行基于组件的Rails应用开发,以及如何对应用程序的大型模块进行拆分和模块化。以下是书中一些核心知识点的详细说明: 1....

    Ruby on Rails入门例子

    Ruby on Rails,简称Rails,是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发过程更加高效、简洁。本篇将通过一个入门实例,深入探讨Rails的基本概念和核心...

Global site tag (gtag.js) - Google Analytics