No se puede ejecutar fastri en cygwin: gema constante no inicializado :: versión (nameError)
Pregunta
Estoy tratando de configurar Fastri (http://eigenclass.org/hiki/fastri) en emacs que se ejecutan en cygwin en Windows. La instalación de Ruby también es de Cygwin, no de la versión de Windows de Ruby. Después de descargar, desempaquetando el tarball y la ejecución setup.rb, cuando intento ejecutar QRI o FRI, recibo el siguiente mensaje de error:
[/cygdrive/g]$qri
/usr/lib/ruby/1.8/rdoc/ri/ri_paths.rb:63: uninitialized constant Gem::Version (NameError)
from /usr/lib/ruby/1.8/rdoc/ri/ri_paths.rb:59:in `each'
from /usr/lib/ruby/1.8/rdoc/ri/ri_paths.rb:59
from /usr/lib/ruby/site_ruby/1.8/fastri/util.rb:38:in `require'
from /usr/lib/ruby/site_ruby/1.8/fastri/util.rb:38
from /usr/bin/qri:6:in `require'
from /usr/bin/qri:6
Mi versión de rubí y entorno de gemas:
[/cygdrive/g]$ruby --version
ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-cygwin]
[/cygdrive/g]$gem environment
RubyGems Environment:
- RUBYGEMS VERSION: 1.3.4
- RUBY VERSION: 1.8.7 (2008-08-11 patchlevel 72) [i386-cygwin]
- INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8
- RUBY EXECUTABLE: /usr/bin/ruby.exe
- EXECUTABLE DIRECTORY: /usr/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86-cygwin
- GEM PATHS:
- /usr/lib/ruby/gems/1.8
- /home/rrajagop/.gem/ruby/1.8
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- http://gems.rubyforge.org/
Eché un vistazo a ri_paths.rb para descubrir cómo se debe incluir la versión GEM :: en el archivo, pero no pude resolverlo. Intenté agregar ambos require 'gem/version'
y require 'version'
En ri_paths.rb, pero no hay alegría. yo obtengo 'require': no such file to load -- version (LoadError)
Solución
Ok, finalmente lo hice funcionar. Suplente require 'rubygems/version'
En ri_path.rb lo arregló.
Básicamente, usado puts $:
para descubrir las rutas que requieren buscarán a través de ', descubriendo dónde Gem::Version
se definió (ya tenía una mesa de etiquetas preconstruidas para Ruby y todas mis gemas, por lo que esto fue fácil), y elaboré el camino a la versión desde el componente más cercano de la ruta de búsqueda. Suena simple, ¿verdad? Por supuesto, todo esto me llevó un par de días, el novato rubí que soy.