在site_ruby中强制ruby使用dbi Gem而不是dbi

在site_ruby中强制ruby使用dbi Gem而不是dbi,ruby,rubygems,gem,Ruby,Rubygems,Gem,我正在使用: 视窗7 Ruby 1.8.6一键式安装程序 使用RubyGems安装的DBI版本0.4.3 我在执行这些命令时看到的内容: C:>ruby-v ruby 1.8.6 2008-08-11补丁级别287[i386-mswin32] C:>gem-v 1.3.1 C:>ruby-r rubygems-r dbi-e放置dbi::VERSION 0.2.2 C:>gem列表dbi ***本地宝石*** DBI0.4.3 C:>创业板环境 RubyGems环境: RUBYGEMS版本:1.

我正在使用:

视窗7 Ruby 1.8.6一键式安装程序 使用RubyGems安装的DBI版本0.4.3 我在执行这些命令时看到的内容:

C:>ruby-v

ruby 1.8.6 2008-08-11补丁级别287[i386-mswin32]

C:>gem-v

1.3.1

C:>ruby-r rubygems-r dbi-e放置dbi::VERSION

0.2.2

C:>gem列表dbi

***本地宝石***

DBI0.4.3

C:>创业板环境

RubyGems环境:

RUBYGEMS版本:1.3.1 RUBY版本:1.8.6 2008-08-11 patchlevel 287[i386-mswin32] 安装目录:C:/Ruby/lib/Ruby/gems/1.8 RUBY可执行文件:C:/RUBY/bin/RUBY.exe 可执行目录:C:/Ruby/bin RUBYGEMS平台: 红宝石 x86-mswin32-60 宝石路径: C:/Ruby/lib/Ruby/gems/1.8 C:/Users/sutch/.gem/ruby/1.8 GEM配置: :update_sources=>true :verbose=>true :benchmark=>false :backtrace=>false :批量_阈值=>1000 远程来源: 为什么ruby脚本使用site_ruby中安装的DBI而不是RubyGems中安装的DBI

更新以回应路易斯·拉维纳的回答。。。 以下是我尝试你的建议时发生的情况:

C:>ruby-r rubygems-e需要“rubygems”;放置DBI::VERSION

-e:1:未初始化常量DBI NameError

当我更新为需要DBI时:

C:>ruby-r rubygems-e需要“rubygems”;需要“dbi”;放置DBI::VERSION

0.2.2

为什么RubyGems不能覆盖内置库?

使用ruby-r您使用的是ruby内置require,而不是RubyGems重新定义的库

试试这个:

ruby -r rubygems -e "require 'dbi'; puts DBI::VERSION"
这应该能奏效

仅供参考:在Ruby 1.9的较新版本中,这一点得到了改进,1.8中没有一个具有这种行为


希望能有所帮助。

我尝试了您建议的方法,请参见上面的更新问题,Ruby/RubyGems仍然使用内置DBI。为什么RubyGems不使用它的版本,这是DBI的最新版本?你是对的,我忘了提到你也需要DBI。RubyGems将始终优先考虑安装在site_ruby中的库,请看以下内容:你可以从site_ruby中删除捆绑的DBI,它将获得宝石。此外,您还可以使用Rubyinstaller,它不捆绑任何库:-