Domanda

In particolare, la gemma rubino oci8. Ho sia 1.0.7 e 2.0.4 installato. Voglio 1.0.7.

posso solo richiedere oci8, ma non ottenere la versione che voglio.

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

I può 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

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

È stato utile?

Soluzione

Il mio problema era duplice:

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

2) il mancato rilascio di un richiedono comando dopo il comando gem.

L'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

L'utilizzo corretto in un file di rotaie 2.3.x environment.rb è:

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

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

Altri suggerimenti

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'
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top