43 votes

Comment puis-je exiger une version spécifique d'une gemme ruby ?

Plus précisément, la gemme ruby-oci8. J'ai installé les versions 1.0.7 et 2.0.4. Je veux la 1.0.7.

Je peux juste exiger oci8, mais je n'obtiens 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 d'accès complet au fichier, ce 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 réellement 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 privilégierais définitivement cette dernière approche si elle permettait de charger la bibliothèque, plutôt que de simplement confirmer qu'elle est présente sur mon système. Qu'est-ce qui me manque ?

72voto

KenB Points 2898

Mon problème était double :

1) confondre la syntaxe des commandes 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.

L'utilisation correcte 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 correcte dans un fichier environment.rb de rails 2.3.x est la suivante :

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

Merci aux gens de http://www.ruby-forum.com/topic/109100

1voto

Jonathan Points 5482

Essayez la syntaxe suivante (au lieu de require) :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X