Plus précisément, la gemme Ruby-oci8. J'ai installé à la fois 1.0.7 et 2.0.4. Je veux 1.0.7.
Je peux juste avoir besoin d'oci8, mais je n'ai pas la version que je veux.
irb(main):001:0> require 'oci8'
=> true
irb(main):002:0> OCI8::VERSION
=> "2.0.4"
Je peux exiger d'utiliser le chemin complet du fichier, qui fonctionne, mais ne sera pas portable:
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"
Je peux utiliser la commande gem pour demander la version que je veux, mais elle ne semble pas charger la bibliothèque:
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
Je préférerais certainement cette dernière approche si je chargeais la bibliothèque, plutôt que de simplement confirmer qu'elle est présente sur mon système. Qu'est-ce que je rate?
Mon problème était double:
1) confondre la syntaxe de la commande gem avec celle utilisée dans les lignes config.gem d'un fichier de configuration Rails environment.rb).
2) ne pas émettre une commande require après la commande gem.
Une bonne utilisation dans un script est:
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
L'utilisation appropriée dans un fichier Rails 2.3.x environment.rb est:
config.gem "Ruby-oci8", :version=>'1.0.7'
Merci aux gens de http://www.Ruby-forum.com/topic/1091
Essayez la syntaxe suivante (au lieu d'exiger):
require_gem 'RMagick' , '=1.10'
require_gem 'RMagick' , '>=1.10'
require_gem 'rake', '>=0.7.0', '<0.9.0'