ruby - ¿Cómo necesito una versión específica de una gema de rubí?
version oci8 (2)
Específicamente, la gema ruby-oci8. Tengo 1.0.7 y 2.0.4 instalados. Quiero 1.0.7.
Solo puedo exigir oci8, pero no obtengo la versión que quiero.
irb(main):001:0> require ''oci8''
=> true
irb(main):002:0> OCI8::VERSION
=> "2.0.4"
Puedo requerir el uso de la ruta completa al archivo, que funciona, pero no va a ser portátil:
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"
Puedo usar el comando gem para solicitar la versión que quiero, pero no parece que cargue realmente la biblioteca:
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
Definitivamente, preferiría este último enfoque si cargara la biblioteca, en lugar de simplemente confirmar que está presente en mi sistema. ¿Qué me estoy perdiendo?
Mi problema era doble:
1) confunde la sintaxis del comando gem con la utilizada en las líneas config.gem en un archivo de configuración de rails environment.rb.
2) no emitir un comando require después del comando gem.
El uso correcto en un script es:
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
El uso adecuado en un archivo rails 2.3.x environment.rb es:
config.gem "ruby-oci8", :version=>''1.0.7''
Gracias a la gente en http://www.ruby-forum.com/topic/109100
Pruebe la siguiente sintaxis (en lugar de requerir):
require_gem ''RMagick'' , ''=1.10''
require_gem ''RMagick'' , ''>=1.10''
require_gem ''rake'', ''>=0.7.0'', ''<0.9.0''