Как мне нужна определенная версия GEM RUBY?
Вопрос
В частности, Ruby-Oci8 Gem. У меня установлено 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
Я бы определенно предпошлю этот последний подход, если загрузит библиотеку, а не просто подтверждаю, что он присутствует в моей системе. Что мне не хватает?
Решение
Моя проблема была в два года:
1) запутанная синтаксис команды GEM с использованием в строках в Config.gem в файле конфигурации Rails Security.RB.
2) Неспособность выдавать команду requrue после команды 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
Правильное использование в рельсах 2.3.x Exection.rb Файл:
config.gem "ruby-oci8", :version=>'1.0.7'
Спасибо людям в http://www.ruby-forum.com/topic/109100.
Другие советы
Попробуйте следующий синтаксис (вместо требования):
require_gem 'RMagick' , '=1.10'
require_gem 'RMagick' , '>=1.10'
require_gem 'rake', '>=0.7.0', '<0.9.0'