Заставить ruby ​​использовать dbi Gem вместо dbi в site_ruby - PullRequest
1 голос
/ 22 марта 2010

Я использую:

  • Windows 7
  • Ruby 1.8.6 Установщик в один клик
  • DBI версии 0.4.3, установленный с использованием RubyGems

Что я вижу при выполнении этих команд:

C:> ruby ​​-v

ruby ​​1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32]

C:> gem -v

1.3.1

C:> ruby ​​-r rubygems -r dbi -e "ставит DBI :: VERSION"

0.2.2

C:> список драгоценных камней dbi

*** МЕСТНЫЕ КАМНИ **** ***

dbi (0.4.3)

*Среда 1031 * C:> gem

Среда RubyGems:

  • ВЕРСИЯ RUBYGEMS: 1.3.1
  • ВЕРСИЯ RUBY: 1.8.6 (уровень обновления 2008-08-11287) [i386-mswin32]
  • КАТАЛОГ УСТАНОВКИ: C: /Ruby/lib/ruby/gems/1.8
  • RUBY EXECUTABLE: C: /Ruby/bin/ruby.exe
  • ИСПОЛНЯЕМЫЙ КАТАЛОГ: C: / Ruby / bin
  • ПЛАТФОРМЫ RUBYGEMS:
    • ruby ​​
    • x86-mswin32-60
  • ДРАГОЦЕННЫЕ ПУТИ:
    • C: /Ruby/lib/ruby/gems/1.8
    • C: /Users/sutch/.gem/ruby/1.8
  • КОНФИГУРАЦИЯ GEM:
    • : update_sources => true
    • : verbose => true
    • : тест => false
    • : обратная трассировка => false
    • : массовый порог => 1000
  • УДАЛЕННЫЕ ИСТОЧНИКИ:

Почему сценарии ruby ​​используют DBI, установленный в site_ruby, а не DBI, установленный с RubyGems?


Обновление для ответа на ответ Луиса Лавены ...

Вот что произошло, когда я попытался сделать то, что вы предлагаете:

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 не переопределяет встроенную библиотеку?

1 Ответ

0 голосов
/ 23 марта 2010

Используя ruby -r вы используете встроенную Ruby-версию вместо той, которая была переопределена RubyGems.

Попробуйте:

ruby -r rubygems -e "require 'dbi'; puts DBI::VERSION"

Это должно сработать.1008 * К вашему сведению: это было улучшено в более новых версиях Ruby (версии 1.9, ни одна из 1.8 не имеет такого поведения).

Надеюсь, это поможет.

...