公告 Ruby China 开始用 Ruby 2.0 跑了

huacnlee · 2013年02月25日 · 最后由 huangkai 回复于 2015年01月23日 · 12992 次阅读

基本上代码都没怎么修改过,一下就跑起来了。

bundler 还是 pre 版。。。

速度变快了……是错觉么…… :D

支持!! 小步前进~

中午有一会 502 了

#2 楼 @southwolf 速度真的快了嘛?

好消息。不用再打 falcon patch 了。

Ruby China 太潮啦~~

我这里 rails console 启动速度从 1.9 的 15 秒提高到 4 秒

1.9 到 2.0 , 好像是全兼容的?

#11 楼 @sevk 不兼容的地方还是有一点, 但很少, 见 Release Notes 里的这部分

收到,需要花时间仔细看看

#4 楼 @i5ting 那会儿是一个 Gem 线上跑不支持,去掉了

#9 楼 @suupic 这个提高也太大了

#14 楼 @huacnlee

升级过程, 能写个教程吗?

多谢了。
http://ruby-china.org/topics/8909

#16 楼 @Coy railscasts 肯定会马上跟进升级教程的

这效率真是快啊

白天不好停机,晚上升级

确实快不少,响应速度 以前平均 120 毫秒,现在平均在 70 毫秒

#11 楼 @sevk Ruby 本身兼容问题不大。主要看用到的 gems 的兼容性。

已经在线上用 2.0 了?大家都很酷啊

rvm 升级 2.0

#23 楼 @bydmm 你的 rails 升级成功了吗?

我的 ruby 升级成功了, 但是 rails 不知道如何升级。

http://ruby-china.org/topics/8909

开发模式,只看到 get assets 的响应速度提高了,其他目测没啥变化... 不过进控制台的速度是提升了..

Ruby 2.0 发布了,Rails 4 啥时候发布呢?

thin 好像不兼容 ruby 2.0,不知道有什么好办法。因为我用了 faye,所以还离不开 thin。

估计 gem 都需要重新运行 bundle 安装一下吧? 2.0 不需要 faye 了吧?

走在潮流的尖端啊

#29 楼 @jimrokliu 我用的是 thin,好像没问题

Matz 貌似早就说过, 2.0 是一个里程碑式的版本, 虽然变化很大, 但是主要是在内部实现. 而非外部表现.

@huacnlee rails 是 3.1.12 么?怎么解决的 iconv 的依赖? 我这边切换到 2.0 就会报 iconv 的依赖的错,来自那个 activesupport.

iconv 是主要问题, 3.2.11 好像可以直接用的,我们项目用了 sunspot 还是有 iconv 的兼容问题。

感觉速度变快乐,大家有同感吗?

按着势头,估计 Rails 4 正式版一出正式版也会换~

#32 楼 @pzgz 我在 mac 下开发可以,但是部署到 ubuntu 总是报错,github 上有人提了一个 em 的 issue。https://github.com/eventmachine/eventmachine/issues/389

#28 楼 @mobiwolf 4.0.0.beta1 出了

感觉速度有快啊

#34 楼 @bony iconv 早就不用了,1.9.3 的时候就不用 iconv 了

class String   
   def code_a2b(a,b)
      if defined? Encoding::Converter
        Encoding::Converter.new(a,b, :universal_newline => true).convert self rescue self
      else
        Iconv.conv( b , a ,self)
      end
   end
end

irb 的启动速度很快。提速明显,2.0 应该要比 1.9+ 快。

弱弱问一下。。我用 rvm 下载了 ruby-2.0.0 之后,打gem -v 会出现这个提示……

ERROR:  Your gem push credentials file located at:

    /home/hegwin/.gem/credentials

has file permissions of 0664 but 0600 is required.

You should reset your credentials at:

    https://rubygems.org/profile/edit

if you believe they were disclosed to a third party.

这二者间有什么联系么。。

P.S. 我改过文件权限就好了……为什么以前不需要呢……

Ruby 社区就是猛…至今还没有看到哪个 Python 社区用 Python 3.0 的,哈哈。

期待 passenger 赶快跟上,rubygems 有问题,安装不了 passenger-install-nginx-module

#45 楼 @tualatrix Python3 跟 Python2 不是同一个东西啊,Ruby 的升级更平滑了

49 楼 已删除

#45 楼 @tualatrix 据说 3.0 和之前版本很多都不兼容,连 print 都不兼容。

说到 python3000 让我想到一个段子

「听好儿子,要提出目标,但不可盲目追随它」「我明白了爸爸,就像 Python 那样提出『只采用唯一正确的方法』那样的目标,实际上却存在 2、3 版本的不兼容」「住口!」「urllib 和 urllib2」「住口!!!」# 译自日语推

附上日语(不知道是不是真的原文

「いいか息子よ.目標を掲げ,しかしその目標に囚われ過ぎないに.」「はいお父さん.つまり Python のように『誰もが正しいと考える,たった 1 つの方法をできる限り採用する』という目標を掲げつつ実際には 2 と 3 という非互換な」「やめろ!」「urllib と urllib2」「やめろ!!!」

速度真快,不过 homebrew 好像还没更新 ruby 2.0 到里面

#49 楼 @outman print 貌似变成一个函数了

@suupic 我这里rails console启动速度从1.9的15秒提高到4秒 看到这个真心被吸引了..

@huacnlee 用的是 2.0.0-rc2 ?

#53 楼 @larryzhao 我这里是从 15、6 秒变成 6 秒了,测试跑起来快多了,应该就是因为 require 优化了的缘故

是快了很多了。!

确实快了 好多

应该先别急着上吧,说不定爆出来一个大 bug?

测试了一下,发现 rails c 从 23 秒变成 5 秒了,神奇。

内存 1.9.3 是 151M, 2.0.0 是 135M。

@huacnlee Rails 4 as next step, perhaps?

怎么确保项目跑 Ruby 2.0?上 2.0 后跑一遍测试?

#49 楼 @outman print 性质变了,改成函数了。

#65 楼 @fire9 print 本来就是方法吧。

rvm install ruby-2.0.0 安装的是 binary 版。我想自己编译都不行:(

#21 楼 @ashchan 用 ruby2.0 sinatra 好想要加上 enable :run 才能跑,这有什么讲究么?

#67 楼 @efeng1st rvm install 2.0.0 --disable-binaries

我给自己的站弄了一下,发现 ruby2.0.0 下的 eventmachine 似乎有问题……

#70 楼 @ranmocy 呵呵,原来还有这样的参数啊。Thx.

#68 楼 @ghawkgu 不需要呀。sinatra 直接就跑起来了。。

还没怎么看 2.0 呢 看来要跟进了

Installing darkfish documentation for builder-3.1.4
ERROR:  While executing gem ... (RDoc::Error)
    error generating /home/ray/.rvm/gems/ruby-2.0.0-p0/doc/builder-3.1.4/rdoc/doc/releases/builder-2_0_0_rdoc.html: U+201C from UTF-8 to US-ASCII (Encoding::UndefinedConversionError)

不知道这是什么问题呢?bundle 不起来。

过一段再用,现在先不着急,先用 1.9.3。

在自己机器上装了 Ruby 2.0,跑了一下,rails s 和 rails c 都快了 2 秒左右,1.9.3 下 rails c 大概 9 秒,2.0 花 7 秒。

用 thin 跑 faye 也没问题(只是启动起来了,具体的没测)。

目前发现的问题就是 gem -v 挂了……也没查到啥原因

Error loading RubyGems plugin "/Users/david/.rvm/gems/ruby-2.0.0-p0/gems/yard-0.8.3/lib/rubygems_plugin.rb": cannot load such file -- rubygems/doc_manager (LoadError)
2.0.0
匿名 #79 2013年03月01日

#76 楼 @2gua 只要不是用于生产环境,自己用的话紧跟最新版更好吧 顺华如此 “激进”,倒是没想到,嘿嘿 话说 Ruby 2.0 确实快了很多,而且与 Ruby 1.9 完美兼容,所以也不会有什么大问题的

我怎么觉得 1.9.3 falcon 快些

#77 楼 @darkbaby123

手动装 rubygems 2.0 就可以了

#78 楼 @ruchee 嗯,果断换。

可否写个升级教程出来?

期待 ruby-china rails4 的重构,使用那个 doll cache ,估记能控制到 40ms 以内吧

真的快了😄

感觉速度快了不少。。。

的确感觉到明显的提升了~

@huacnlee 有调那些 GC 的参数么?

你们都专注在快上面,重点是消耗内存少了啊!!!有谁测试过这个的?

快了太多

我在学习《R 和 RUBY 数据分析之旅第 3 章》,代码如下:

class Restroom
  attr_reader :queue
  attr_reader :facilities

  def initialize(facilities_per_restroom=3)
    @queue=[]
    @facilities=[]
    @facilities_per_restroom.times{@facilities<<Facility.new}
  end

  def enter(person)
    unoccupied_facility=@facilities.find{|facility| not facility.occupied?}
    if unoccupied_facility
      unoccupied_facility.occupy person
    else
      @queue<<person
    end
  end

  def tick
    @facilities.each{|f| f.tick}
  end
end 
# class Restroom


class Facility
  def initialize
    @occupier = nil
    @duration = 0
  end
  def occupy(person)
    unless occupied?
      @occupier = person
      @duration =1
      Person.population.delete person
      true
    else
      false
    end
  end

  def occupied?
    not @occupier.nil?
  end

  def vacate
    Person.population<<@occupier
    @occupier = nil    
  end

  def tick
    if occupied? and @duration > @occupier.use_duration
      vacate
      @duration = 0
    elseif occupied?
      @duration +=1
    end
  end
end
# class Facility

class Person
  @@population = []
  attr_reader :use_duration
  attr_accessor :frequency

  def initialize(frequency=4,use_duration=1)
    @frequency= frequency
    @use_duration=use_duration
  end

  def self.population
    @@population
  end

  def need_to_go?
    rand(DURATION)+1<=@frequenty
  end
end
# class Person

require 'csv'
frequency=3
facilities_per_restroom=3
use_duration=1
population_range=10..600

data={}
population_range.step(10).each do |population_size|
  Person.population.clear
  population_size.times{Person.population<<Person.new(frequency,use_duration)}
  data[population_size]=[]
  restroom=Restroom.new facilities_per_restroom
  DURATION.times do |t|
    data[population_size]<<restroom.queue.size
    queue=restroom.queue.clone
    restroom.queue.clear
    unless queue.empty
      restroom.enter queue.shift
    end
    Person.population.each do |person|
      if person.need_to_do
        restroom.enter person
      end
    end
    restroom.tick
  end
end

CSV.open('simulation1.csv','w') do |csv|
  lbl=[]
  population_range.step(10).each{|population_size|lbl<<population_size}
  csv<<lbl
  DURATION.time do |t|
    row =[]
    population_range.step(10).each do |population_size|
      row <<data[population_size][t]
    end
    csv <<row
  end

end

运行结果如下:

restroom.rb:90:in `step': no block given (LocalJumpError)
from restroom.rb:90


第90行:population_range.step(10).each do |population_size|

哪里错了,请指点!

#75 楼 @QueXuQ 我的 yard-0.8.3 也是出现了同样的问题,卸载了当前的 yard 然后重新安装了当前最新版 yard-0.8.76 就 OK 了。

--- rails_projects/genghis » gem -v
Error loading RubyGems plugin "/Users/HuangKai/.rvm/gems/ruby-2.1.5/gems/yard-0.8.3/lib/rubygems_plugin.rb": cannot load such file -- rubygems/doc_manager (LoadError)
2.4.5
--- rails_projects/genghis » gem uninstall yard -v 0.8.3
Error loading RubyGems plugin "/Users/HuangKai/.rvm/gems/ruby-2.1.5/gems/yard-0.8.3/lib/rubygems_plugin.rb": cannot load such file -- rubygems/doc_manager (LoadError)
Remove executables:
    yard, yardoc, yri

in addition to the gem? [Yn]  y
Removing yard
Removing yardoc
Removing yri
Successfully uninstalled yard-0.8.3
--- rails_projects/genghis » gem install yard
Fetching: yard-0.8.7.6.gem (100%)
Successfully installed yard-0.8.7.6
1 gem installed
--- rails_projects/genghis » gem -v
2.4.5
需要 登录 后方可回复, 如果你还没有账号请 注册新账号