2010-04-22 14 views
40

In particolare, la gemma ruby-oci8. Ho installato sia 1.0.7 che 2.0.4. Voglio 1.0.7.Come si richiede una versione specifica di una gemma di rubino?

Posso solo richiedere oci8, ma non ottengo la versione che voglio.

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

posso richiedere utilizzando il percorso completo del file, che funziona, ma non sta per essere portatile:

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" 

posso usare il comando gemma di chiedere per la versione che voglio, ma non sembra in realtà caricare la libreria:

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 

avrei sicuramente favorire questo ultimo approccio se sarebbe caricare la libreria, e non solo conferma che è presente sul mio sistema. Cosa mi manca?

risposta

64

Il mio problema era duplice:

1), confondendo la sintassi dei comandi gioiello con quello utilizzato nelle linee config.gem in rotaie environment.rb file di configurazione.

2) non è possibile emettere un comando require dopo il comando gem.

utilizzo corretto in uno script è:

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 

utilizzo corretto in un file environment.rb 2.3.x Rails è:

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

Grazie ai ragazzi di http://www.ruby-forum.com/topic/109100

1

provare la seguente sintassi (invece di richiedere):

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

appare require_gem essere sintassi obsoleta, sostituita dal comando gem che ho fatto riferimento nel terzo esempio nella mia domanda (sto usando i rubygems 1.3.5). Ma il tuo suggerimento mi ha inserito nella discussione su http://www.ruby-forum.com/topic/109100, che indica che dovrei prima emettere il comando gem e quindi richiedere la gemma, ad esempio: gem 'rubino -oci8 ',: lib =>' oci8 ',: version =>' = 1.0.7 '; richiedono 'oci8' Ma non funziona nemmeno per me, ho ancora finito con 2.0.4 caricato. Sospetto di essere bloccato dalla differenza tra il nome della gemma (ruby-oci8) e il nome del file da caricare (oci8). – KenB

Problemi correlati