Как мне потребовать конкретную версию рубинового камня? - PullRequest
42 голосов
/ 22 апреля 2010

В частности, камень ruby-oci8.У меня установлены 1.0.7 и 2.0.4.Я хочу 1.0.7.

Мне может потребоваться oci8, но я не получаю нужную версию.

irb(main):001:0> require 'oci8'
=> true
irb(main):002:0> OCI8::VERSION
=> "2.0.4"

Мне может потребоваться указать полный путь к файлу,работает, но не собирается быть переносимым:

irb(main):001:0> require 'C:\Ruby\lib\ruby\gems\1.8\gems\ruby-oci8-1.0.7-x86-mswin32-60\lib\oci8'
=> true
irb(main):002:0> OCI8::VERSION
=> "1.0.7"

Я могу использовать команду gem для запроса нужной версии, но на самом деле она не загружает библиотеку:

irb(main):001:0> gem 'ruby-oci8', :lib=>'oci8', :version=>'=1.0.7'
=> true
irb(main):002:0> OCI8::VERSION
NameError: uninitialized constant OCI8
    from (irb):2

Я бы определенно предпочел этот последний подход, если бы загружал библиотеку, а не просто подтвердил, что она присутствует в моей системе.Чего мне не хватает?

Ответы [ 2 ]

70 голосов
/ 23 апреля 2010

Моя проблема была двоякой:

1) путаница синтаксиса команды gem с тем, который используется в строках config.gem в файле конфигурации rails environment.rb.

2) не удается выполнить команду require после команды gem.

Правильное использование в скрипте:

gem 'ruby-oci8', '=1.0.7'
require 'oci8'           # example is confusing; file required (oci8.rb) is not 
                         # same name as gem, as is frequently the case

Правильное использование в файле rails 2.3.x environment.rb:

config.gem "ruby-oci8", :version=>'1.0.7'

Спасибо всем за http://www.ruby -forum.com / topic / 109100

1 голос
/ 22 апреля 2010

Попробуйте следующий синтаксис (вместо обязательного):

require_gem 'RMagick' , '=1.10'
require_gem 'RMagick' , '>=1.10'
require_gem 'rake', '>=0.7.0', '<0.9.0'
...