2

我在 Windows 7 上通过一键安装程序安装了 ruby​​ 1.9.2。

现在我有一个只能在 1.8.7 上运行的 gem

所以我安装了 Pik 并试图让 1.8.7 工作。

irb 运行良好,但 require 没有。

例如,如果我做一个 gem 列表,它会列出有问题的 gem 当我需要 irb 中的 gem 时,它说没有要加载的文件。

当我使用 Pik 切换回 1.9.2 时,一切都很好(即 ​​gem 加载)

我尝试在 pik 外部和 pik 内部加载宝石。

这是我在 1.8.7 下运行的加载路径:

....>ruby -ve "puts $LOAD_PATH.inspect"
ruby 1.8.7 (2011-06-30 patchlevel 352) [i386-mingw32]
["C:/Ruby187/lib/ruby/site_ruby/1.8", "C:/Ruby187/lib/ruby/site_ruby/1.8/i386-ms
vcrt", "C:/Ruby187/lib/ruby/site_ruby", "C:/Ruby187/lib/ruby/vendor_ruby/1.8", "
C:/Ruby187/lib/ruby/vendor_ruby/1.8/i386-msvcrt", "C:/Ruby187/lib/ruby/vendor_ru
by", "C:/Ruby187/lib/ruby/1.8", "C:/Ruby187/lib/ruby/1.8/i386-mingw32", "."]

我在路径上没有看到 Ruby187/lib/ruby/gems/1.8 ......也许这就是问题所在?如果是这样,我该如何修复它(我不知道如何更改加载路径)并且有人知道为什么 pik 不起作用或我可以做些什么来修复它。

最后,有人知道如何摆脱 1.9.2 并全新安装 1.8.7 吗?

谢谢你的帮助!

4

1 回答 1

1

虽然 RubyInstaller 在包中包含 RubyGems,但 Ruby 1.8.x 本身并没有像 1.9.1 和 1.9.2 那样默认激活 RubyGems。

require "rubygems"在对要加载的任何 gem 执行 require 之前,您需要这样做。

由于您的脚本可以在 Ruby 的两个版本上运行,因此您可以执行以下操作:

require "rubygems" unless defined?(Gem)

如果未定义(在 Ruby 1.9.2 下),它将启用 RubyGems

希望有帮助。

于 2011-08-16T17:49:24.363 回答