`
花花公子
  • 浏览: 132008 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

用rails 3的有没有想过退回到2.3的

阅读更多
正在用rails3的各位,你们有没有被忽悠的感觉?

以前对大胡子yehuda印象不错,特别是此君ruby/javascript双修,一度被我视作偶像。和他也见过两次面,感觉人也不错。我现在还清楚记得他一直消灭无意义的语言之争的倡导。

可是rails 3的速度实在难以忍受。3.1所谓的新特性coffeescript和scss的支持自己加上两句require也能解决了。对于chunked encoding的支持在rack和sinatra中也早就实现了。

rails所谓的社区主导其实还是几个主要开发者主导,比如现在yehuda转去做前端了,rails也要增加传说的rich client api了。

建议顺带看一下下面这篇吐糟basecamp的,创新公司也终归有一天不思进取
http://www.christianjung.com/2011/goodbye-basecamp-this-is-the-end-of-a-true-love-my-heart-is-broken/
分享到:
评论
29 楼 山雨欲来风满楼 2011-06-28  
如果在开发模式下太慢, 已经有解决方案了。

gem install rails-dev-boost


另外,我没有用active-record,自己感觉rails 3速度还可以, 在生产模式下,不过没有测试数据来证明。
28 楼 cxh116 2011-06-28  
根据RAILS3更新太快了  哎...
27 楼 chloerei 2011-06-28  
之前用脚手架测试,rails3 + ruby 1.9.2是最慢的,rails3 + ree 1.8.7 是最快的。数据丟了,感兴趣的可以测试下。
26 楼 zires 2011-06-28  
花花公子 写道
正在用rails3的各位,你们有没有被忽悠的感觉?

忽悠倒没觉得,rails3带来的新特性让人一震,性能的话,应该还在调优,期待后续版本
25 楼 xiaojin0913 2011-06-28  
只用最新的,不回更旧的,
PS:
LZ其实一直发rails 不好用的信息,,可能与你现在推广的啥有关的,只是个人想法...

PSPS
我觉得rails很好,所以一直用,就这么简单,我自认为自己没能力改变rails  的速度什么的,所以,只能看大牛们努力了
24 楼 up2u0609 2011-06-28  
Hooopo 写道
rainchen 写道
的确是慢了,刚好有个项目从2.3.9升级到3.0.5的,简单对比下db和routes的:

for 2.3.9:
  development:
    time rake db:version
      real	0m24.219s
      user	0m10.152s
      sys	0m2.971s

    time rake routes
      real	0m19.710s
      user	0m10.089s
      sys	0m2.713s
  
  production:
    time rake db:version RAILS_ENV=production
      real	0m20.110s
      user	0m12.217s
      sys	0m2.592s
    
    time rake routes RAILS_ENV=production
      real	0m19.384s
      user	0m12.109s
      sys	0m2.600s


for 3.0.5:
  development:
    time rake db:version
      real	0m41.514s
      user	0m26.641s
      sys	0m3.403s

    time rake routes
      real	0m34.094s
      user	0m27.760s
      sys	0m3.100s

  production:
    time rake db:version RAILS_ENV=production
      real	0m26.630s
      user	0m20.295s
      sys	0m2.643s
    
    time rake routes RAILS_ENV=production
      real	0m24.340s
      user	0m21.401s
      sys	0m2.547s



在development上rails3比2慢了将近一倍
但比较让人满意的是production时区别不大
但在做开发时随便跑个rails、rake命令都要30-40秒以上实在影响情绪

肯定是不会退回去的,rails3好的地方更多,只是希望再后面的版本性能能提上来。
另外个人不大喜欢coffeescript这种东西。


这个时间大部分都是ruby的加载文件所花的时间,和rails性能没多少关系。当然这个会影响开发体验。
ruby1.9.2的require性能问题已经解决了:http://www.rubyinside.com/ruby-1-9-3-faster-loading-times-require-4927.html

对于新建项目来说,退已经成了一个不太容易的事情。rails(包括其他很多gems)的带病升级是一贯的优良传统,新的更新和对旧bug的修改会出现在新的版本里。
如果进3.1的话,至少这几个安全方面的改进和HTTP Streaming,Rack::Cache ,Rack::ConditionalGet.就已经值得进。

ActiveRecord3.1 对于association chain的改变,特别是has_one和belongs_to,更像是给3.2版本作的准备工作。但是现在肯定有一批依赖于association chain的东西会被影响,能够马上想到的一个例子比如will_paginate.

mountable的engine在实用上我用得很不舒服,但是在做了一些hack工作之后还是能够出来可以接受的效果。只是在mount之后必须要用main_app.xxx_path这样的方式来找route helper我个人觉得很多余;另外在engine内调用route也很难受,因为不可能知道自己会被以什么别名来mount。

sprockets作为一个第三方的包被作为杀手级应用引用到rails3.1里,结果sprockets2的最新一个版本2.0.0.beta.11的一个看起来很有道理的改变会让rails-3.1.0.rc4里的rake assets:precompile直接不工作。
这个改变是把一个getter里原来直接返回一个数组的方式改成返回数组的dup:
2.0.0.beta.10里的
    def paths
      @trail.paths#.dup
    end

2.0.0.beta.11里的
    def paths
      @trail.paths.dup
    end

恶啊~总之~现在类似的情况还有一些~
但是不管怎么说,2.3和3.1之间还有一个3.0 .我想说,所谓慢通常并不是一个框架单方面的问题,框架通常是把原有的问题放大。当然,这事具体问题具体分析,各家有各家的经。
23 楼 t0uch 2011-06-27  
每次rails新版本总是有很多让人兴奋的东西出现。用上了rails3从来没有想过rails2。rails2到3是这样,这次的3.1也一样。有时候,很多东西比性能重要。
22 楼 richyzhang 2011-06-27  
Rails的学习曲线是很高,而且实际上用rails能节省的开发时间和对web的了解成正比。Web知识丰富的学起来快用起来也觉得自然,否则就觉得学起来成本太高了。

Rails的开发效率很高,但是别指望一个新手可以很快上手。
21 楼 Hooopo 2011-06-27  
orcl_zhang 写道
rails很多地方做的很不好。比如关于form,routes等,太多的语法糖,同一个东西写法太多,过于花哨,不实用。带来的是学习上的成本提高,而没有任何一点好处。

让你的代码更DRY和提供漂亮的API接口难道不实用?不知道你指的实用是什么。
20 楼 rainchen 2011-06-27  
前面跑rails3的就是用ruby 1.9.2
ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.7.0

关于ruby 1.9.3提速的(http://rhnh.net/2011/05/28/speeding-up-rails-startup-time)之前试过,部分gem 不兼容,project跑不起来没办法对比

btw,有了rvm,换ruby版本很轻松
19 楼 richyzhang 2011-06-27  
以我的经历来说,Rails3.0看了下,我觉得内部结构优化的不错,但没有任何让我换版本的动力。毕竟jquery早有插件可以支持,ActiveRecord我也没需求换成其他的,反而要连带命令变更、接口变更等的麻烦,于是继续用Rails 2.3.

但是,3.1的出现,Rails让人提神的东西又出现了。scss虽然本来也就存在,但和rails框架内的结合还是3.1做的好,asset变成头等公民的意义重大。coffeescript值不值两说,但反正可以直接在里面写js,Rails3.1为此提供了一个良好的什么代码放在什么位置的惯例和框架,这是很棒的。同样在view层面,还支持了view模板的继承,终于开始有一个框架把写OO代码常用的思想运用到view层去了,这是了不起的创举。动手写网页的人都明白,写web应用最费时间的就是view层。另外几个层面老实说已经解决的算不错了,但view层基本被动的很少。Rails3.1在这方面做出了突破。

说道性能,Rails3主要搭配ruby1.9了,不知道1.9@3.1 vs 1.8@2.3性能如何。无论如何,这一点确实挺让人郁闷的,从各种言论来看,rails3的性能提升确实不佳。

但是,提神的东西超过让人郁闷的东西,老的项目我是不想折腾,继续2.3。新的项目那肯定直接上3.1了。

18 楼 Hooopo 2011-06-27  
wenyiyun 写道
yehuda的胡子还嫩着呢,我猜他的计算机功底是一坨狗屎,纵然他又搞JS又搞html。

这是冷笑话么
17 楼 Hooopo 2011-06-27  
rainchen 写道
的确是慢了,刚好有个项目从2.3.9升级到3.0.5的,简单对比下db和routes的:

for 2.3.9:
  development:
    time rake db:version
      real	0m24.219s
      user	0m10.152s
      sys	0m2.971s

    time rake routes
      real	0m19.710s
      user	0m10.089s
      sys	0m2.713s
  
  production:
    time rake db:version RAILS_ENV=production
      real	0m20.110s
      user	0m12.217s
      sys	0m2.592s
    
    time rake routes RAILS_ENV=production
      real	0m19.384s
      user	0m12.109s
      sys	0m2.600s


for 3.0.5:
  development:
    time rake db:version
      real	0m41.514s
      user	0m26.641s
      sys	0m3.403s

    time rake routes
      real	0m34.094s
      user	0m27.760s
      sys	0m3.100s

  production:
    time rake db:version RAILS_ENV=production
      real	0m26.630s
      user	0m20.295s
      sys	0m2.643s
    
    time rake routes RAILS_ENV=production
      real	0m24.340s
      user	0m21.401s
      sys	0m2.547s



在development上rails3比2慢了将近一倍
但比较让人满意的是production时区别不大
但在做开发时随便跑个rails、rake命令都要30-40秒以上实在影响情绪

肯定是不会退回去的,rails3好的地方更多,只是希望再后面的版本性能能提上来。
另外个人不大喜欢coffeescript这种东西。


这个时间大部分都是ruby的加载文件所花的时间,和rails性能没多少关系。当然这个会影响开发体验。
ruby1.9.2的require性能问题已经解决了:http://www.rubyinside.com/ruby-1-9-3-faster-loading-times-require-4927.html
16 楼 Hooopo 2011-06-27  
从rails2.3到3.1,我觉得很多地方越来越好。
易用性方面:
引用
Bundler
ActiveRecord 的新 Query API
ActiveRecord 的新 Validation API
Block Helper
UJS
新的 Routing API
新的 ActionMailer
Rails console默认输出SQL query log
Custom ActiveRecord Attribute Serialization


解耦合方面:
引用
Mountable Engines
Template Inheritance
ActiveModel


安全方面:
引用

XSS
ActiveModel::SecurePassword
Rack::SSL

性能方面:
引用
HTTP Streaming
SQL Prepared statements
Rack::Cache
ActiveRecord Identity Map


还有就是修复若干bug
当然目前各种测试表明,rails3的性能确实不如rails2.3。据说rails3.2要优化性能和内存使用情况(好像3.0的时候就提过..)。
我觉得从框架本身上提升rails性能空间有限,rack就是rails性能的极限,但是rack/sinatra的性能和nodejs的框架比起来还差得远。


15 楼 t0uch 2011-06-27  
3.1 coffee这东西把gem去掉就ok了,generate的时候就不会生成有关coffee的东西
14 楼 up2u0609 2011-06-27  
R3.1上,coffeescript和scss这两个变化我个人情感上很喜欢,但是目前是项目里还基本忽视,类似的锦上添花的变化每次都有一些。

我觉得ActiveRecord/association,engine和route的变化比较值得关注。

只是一些方法变化太大,主要还有一些明显的bug,让人觉得很不舒服。
13 楼 rainchen 2011-06-27  
的确是慢了,刚好有个项目从2.3.9升级到3.0.5的,简单对比下db和routes的:

for 2.3.9:
  development:
    time rake db:version
      real	0m24.219s
      user	0m10.152s
      sys	0m2.971s

    time rake routes
      real	0m19.710s
      user	0m10.089s
      sys	0m2.713s
  
  production:
    time rake db:version RAILS_ENV=production
      real	0m20.110s
      user	0m12.217s
      sys	0m2.592s
    
    time rake routes RAILS_ENV=production
      real	0m19.384s
      user	0m12.109s
      sys	0m2.600s


for 3.0.5:
  development:
    time rake db:version
      real	0m41.514s
      user	0m26.641s
      sys	0m3.403s

    time rake routes
      real	0m34.094s
      user	0m27.760s
      sys	0m3.100s

  production:
    time rake db:version RAILS_ENV=production
      real	0m26.630s
      user	0m20.295s
      sys	0m2.643s
    
    time rake routes RAILS_ENV=production
      real	0m24.340s
      user	0m21.401s
      sys	0m2.547s



在development上rails3比2慢了将近一倍
但比较让人满意的是production时区别不大
但在做开发时随便跑个rails、rake命令都要30-40秒以上实在影响情绪

肯定是不会退回去的,rails3好的地方更多,只是希望再后面的版本性能能提上来。
另外个人不大喜欢coffeescript这种东西。
12 楼 orcl_zhang 2011-06-27  
rails很多地方做的很不好。比如关于form,routes等,太多的语法糖,同一个东西写法太多,过于花哨,不实用。带来的是学习上的成本提高,而没有任何一点好处。

真的慢了好多。不过还没开始用r3

http://blog.tstmedia.com/news_article/show/86942

引用
A simple reproducible benchmark shows ActiveRecord 3.0.7 to be 1.43 times slower than ActiveRecord 2.3.2.
11 楼 易卡螺丝君 2011-06-27  
花花知道在鸡眼网发贴 是多么徒劳的事了吧
10 楼 hellolaojiang 2011-06-27  
到底好不好,慢不慢,你还是自己去实践实践吧。别看了几篇BLOG就说这也不好,那也不行。天天还有人嚷着JAVA要死了呢,你看人家还不是活的好好的。我没上过3.1,但从我的小站在3.X上运行的情况来看,3.X并没有你想象的那么慢。

相关推荐

    rails guides 2.3 CHM版

    rails guides的CHM版本,这个向导的版本是2.3

    ruby on rails 2.3.5 api html版

    11. **部署**:了解如何将Rails应用部署到服务器,如使用Capistrano自动化部署,或者配置Heroku、AWS等云平台。 通过阅读和查阅Rails 2.3.5的API文档,开发者不仅可以学习到如何在Rails环境中组织代码,还能掌握...

    rails 3.2 API

    Rails 3.2 API 是一个重要的开发资源,主要用于Ruby on Rails框架的开发。Rails是基于Ruby语言的一个开源Web应用程序框架,遵循MVC(Model-View-Controller)架构模式,广泛应用于构建动态网站和Web应用程序。Rails ...

    rails 2.3 chm文档 ,官方最新版

    rails 2.3 chm文档 官方最新版

    railsbrain网站的rails2.3文档(bug修复版)

    这个修复版的文档更新,对于正在使用Rails 2.3.2或者想要了解该版本特性的开发者来说,是非常有价值的资源。通过学习这些修复的bug,开发者可以更好地避免类似问题,提高自己的代码质量。同时,也可以了解到Rails...

    Rails3常用命令行命令

    Rails3 是 Ruby on Rails 框架的一个版本,它提供了一系列强大的命令行工具,使得开发者可以快速地构建和管理Web应用。在本文中,我们将深入探讨Rails3中的常用命令,帮助你更高效地进行开发工作。 首先,新建一个...

    ruby on rails 3 tutorial.pdf

    通过阅读《Ruby on Rails 3 Tutorial》,你不仅能够掌握Ruby on Rails的基本知识,还能获得实际开发经验,从而有信心构建出自己的Web应用。这本书是Ruby on Rails初学者的一份宝贵资源,将帮助你开启精彩的Web开发之...

    Rails 3 in Action

    《Rails 3 in Action》是2011年由Ryan Bigg撰写的一本关于Ruby on Rails框架的权威指南,专门针对当时最新的Rails 3.1版本进行了深入解析。这本书旨在帮助开发者充分利用Rails 3.1的强大功能,提升Web应用开发的效率...

    rails2.3.2

    标题 "rails2.3.2" 指的是 Ruby on Rails 框架的一个特定版本,即 2.3.2。Ruby on Rails(通常...虽然现在已经有许多更新的 Rails 版本,但 Rails 2.3.x 对于理解 Rails 的基本原则和工作方式仍具有重要的历史价值。

    centOS Rails3环境搭建

    ### CentOS环境下Rails 3开发环境搭建详解 #### 一、准备工作与环境配置 在开始部署Rails 3开发环境之前,我们需要确保系统上已经安装了一些基本的软件包和工具。这一步骤对于后续的Ruby和Rails安装至关重要。 ##...

    Rails3 使用rake启动后台任务

    Rails3 是 Ruby on Rails 框架的一个版本,它在2010年发布,引入了许多新特性并改进了框架的性能。Rake 是 Ruby 的一个构建工具,类似于 Java 的 Ant 或者 Python 的 setup.py,它允许开发者用自然语言定义任务,并...

    Ruby on Rails 2.3 Guide.chm

    Ruby on Rails Guide:是rails官方教程,本人为了大家学习查阅的方便,制成chm格式。就如同java doc的chm格式一样方便。

    rails金典教材3本

    Ruby+on+Rails+3+Tutorial.pdf 应用Rails进行敏捷Web开发第4版.pdf (Agile Web Development with Rails) Rails.Recipes.Rails.3.Edition.pdf

    Rails项目源代码

    这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何利用Rails的强大功能来创建一个允许用户上传、分享和浏览图片的应用。 1. **Rails框架基础**: Rails的核心理念是DRY(Don't...

    Ruby Rails 3 Linda

    12. **部署**:最后,了解如何将Rails应用部署到生产环境,如Heroku、AWS或自己的服务器上,使用Capistrano进行自动化部署。 通过"Ruby Rails 3 Linda"的学习,你将掌握Rails 3的核心概念和技术,能够开发出功能...

    ruby on rails 3

    Ruby on Rails 3 是一个基于Ruby编程语言的开源Web应用程序框架,它遵循MVC(Model-...提供的文档如"Ruby192和Rails3.0.3的新征程.doc"和"rails3入门教程.pdf"等,将有助于深入理解这一框架及其在实际项目中的应用。

    Rails101_by_rails4.0

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

    Rails3消息队列系统 Sidekiq

    Rails3消息队列系统 Sidekiq

Global site tag (gtag.js) - Google Analytics