2010-04-22 9 views
40

Insbesondere der Rubin-Oci8 Edelstein. Ich habe beide 1.0.7 und 2.0.4 installiert. Ich möchte 1.0.7.Wie benötige ich eine bestimmte Version eines Rubin-Edelsteins?

Ich kann oci8 nur verlangen, aber ich bekomme nicht die Version, die ich will.

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

kann ich verlangen, den vollständigen Pfad zu der Datei, die funktioniert, ist aber nicht tragbar sein würde:

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" 

ich den Edelstein-Befehl kann für die Version, die ich will, fragen, aber es scheint nicht, um tatsächlich die Bibliothek zu laden:

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 

ich würde diesen letzten Ansatz bevorzugen, wenn würde die Bibliothek laden, anstatt nur bestätigt, dass es auf meinem System vorhanden ist. Was vermisse ich?

Antwort

64

Mein Problem war zweifach:

1) mit, dass in config.gem Linien in einem Schienen verwendet gem Befehlssyntax verwirrend environment.rb Konfigurationsdatei.

2) Fehler beim Befehl require nach dem Befehl gem.

Gemäße Verwendung in einem Skript ist:

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 

Gemäße Verwendung in einem Schienen 2.3.x environment.rb Datei ist:

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

Dank den Leuten bei http://www.ruby-forum.com/topic/109100

1

Versuchen Sie, die folgende Syntax (statt erfordern):

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

require_gem erscheint Veraltete Syntax, ersetzt durch den Gem-Befehl, auf den ich im dritten Beispiel in meiner Frage verwiesen habe (ich benutze Rubygems 1.3.5). Aber Ihr Vorschlag brachte mich zu dem Thread unter http://www.ruby-forum.com/topic/109100, der anzeigt, dass ich zuerst den Befehl gem ausgeben sollte und dann den Edelstein benötige, wie: gem 'ruby -oci8 ',: lib =>' oci8 ',: Version =>' = 1.0.7 '; erfordern 'oci8' Aber das funktioniert auch nicht für mich - ich habe immer noch mit 2.0.4 geladen. Ich vermute, dass ich durch den Unterschied zwischen dem Namen des Edelsteins (ruby-oci8) und dem Namen der zu ladenden Datei (oci8) beeinträchtigt bin. – KenB

Verwandte Themen