新手问题 如何激活特定的 json

nickelchen · 2013年09月10日 · 最后由 ericguo 回复于 2013年09月10日 · 2463 次阅读

有个问题请教一下大家,在 irb 中 require 'json' 时,加载了 1.5.4 版本的。但我的系统中没有这个版本的 json 啊。

$ gem list json

*** LOCAL GEMS ***

json (1.8.0, 1.7.7)
json_pure (1.8.0)
$ irb
1.9.3-p194 :001 > require 'json'
 => true 
1.9.3-p194 :002 > JSON::VERSION
 => "1.5.4" 
1.9.3-p194 :003 > 

这个 1.5.4json 是从哪里加载过来的呢?我如何激活特定版本的 json 呢?

用 gem 呗。

ruby 2.0.0p247 (2013-06-27) [i386-mingw32]

c:\git>irb
irb(main):001:0> require 'json'
=> true
irb(main):002:0> JSON::VERSION
=> "1.8.0"
irb(main):003:0> exit

c:\git>irb
irb(main):001:0> gem 'json', '=1.7.7'
=> true
irb(main):002:0> require 'json'
=> true
irb(main):003:0> JSON::VERSION
=> "1.7.7"
irb(main):004:0> exit

当前 irb 的确可以。但退出之后 再开irb require. 又成了旧的了......有无一劳永逸的方法啊,我不喜欢1.5.4json 啊。

$ irb
1.9.3-p194 :001 > gem 'json', '=1.8.0'
 => true 
1.9.3-p194 :002 > require 'json'
 => true 
1.9.3-p194 :003 > JSON::VERSION
 => "1.8.0" 
1.9.3-p194 :004 > quit
$ irb
1.9.3-p194 :001 > require 'json'
 => true 
1.9.3-p194 :002 > JSON::VERSION
 => "1.5.4" 
1.9.3-p194 :003 > 

默认应该就是会加载最新的版本啊

哪里不对

#3 楼 @ericguo 嗯。这样应该可以了。但是这是指标不治本啊,在项目中也要在 Gemfile 中指定版本,我一直好奇的是 这个 1.5.4 版本是从哪里来的....

#4 楼 @windwiny 是啊。在 irb 中 require 了一个 gem, 得到 Const 后,要是能从这个 Const 查到特定的 .rb 文件就好了... 找到这个 json.rb 文件我定将其粉碎泄愤。

应该是 ruby 安装后自带的,不建议删除。

C:\Ruby200\lib\ruby\2.0.0\json
需要 登录 后方可回复, 如果你还没有账号请 注册新账号