您遇到的问题可能是由于 3 件事:
- 您正在使用的 Ruby 版本
- 在 Ruby 1.9 中使用 SystemTimer gem
- JSON 宝石
我在下面详细说明...
我建议的第一件事是升级您的 Ruby 1.9 版本。最新的稳定版是:
ruby 1.9.2p180 (2011-02-18 revision 30909)
我强烈推荐使用Ruby 版本管理器 (RVM)来安装和管理 Ruby。
在使用 JSON gem 方面,请查看:
http ://ruby.about.com/od/tasks/a/The-Json-Gem.htm
去引用:
在 Ruby 1.8.7 上,您需要安装一个 gem。但是,在 Ruby 1.9.2 中,json gem 与核心 Ruby 发行版捆绑在一起。因此,如果您使用的是 1.9.2,那么您可能已经准备就绪。如果您使用的是 1.8.7,则需要安装 gem。
在安装 JSON gem 之前,首先要意识到这个 gem 分布在两个变体中。只需使用 gem install json 安装此 gem,即可安装 C 扩展变体。这需要安装 C 编译器,并且可能不适用于所有系统。虽然如果你可以安装这个版本,你应该。
如果你不能安装 C 扩展版本,你应该 gem install json_pure 代替。这是在纯 Ruby 中实现的同一个 gem。它应该在 Ruby 代码运行的任何地方、所有平台和各种解释器上运行。但是,它比 C 扩展版本慢得多。
编辑:
看起来您应该避免在Ruby 1.9 中使用SystemTimer gem。有关更多信息,请参见:http: //isitruby19.com/systemtimer
引用菲利普在该页面上发表的评论:
我是这颗宝石的(共同)作者。短篇小说:在 Ruby 1.9 中使用这个 gem 是没用的,没有任何意义!
System Timer 正在尝试解决 Ruby 1.8 (MRI) 中使用的“绿色线程”模型的一些限制。有关详细信息,请参阅http://ph7spot.com/musings/system-timer 。
然后它在 Ruby 1.9 中是无关紧要的,它放弃了绿色线程模型并接受了本机线程(有点因为仍然有一个全局解释器锁)。
干杯,-菲利普