2010-05-31 20 views
10

estoy en Ubuntu10veo joya en "lista de joya", pero tienen "No existe el fichero a cargar"

sudo apt-get install ruby1.9.1-full 

luego descargar fuentes de rubygem 1.3.7 e instalarlo

sudo ruby setup.rb 

entonces , por ejemplo, instalar Sinatra

sudo gem install sinatra 

Finalmente abierta IRB y el tipo

require "rubygems" 
require "sinatra" 

y obtener el error

LoadError: no such file to load -- sinatra 
    from (irb):2:in `require' 
    from (irb):2 
    from /usr/bin/irb:12:in `<main>' 
+0

¿Puede ser más específico? ¿En qué contexto y puedes citar los errores? Intente reinstalar y pasar prolijo para ver qué está pasando. – Jay

+4

Esta pregunta fue destacada en un libro de texto que estoy usando actualmente (http://beta.saasbook.info/). Esté preparado para obtener la insignia de "pregunta popular" pronto. –

+4

Vine aquí después de leer Ingeniería de software de larga duración (libro SaaS) – coder9

Respuesta

4

que tenía exactamente este problema. El problema es que las gemas y los rubíes no están de acuerdo sobre dónde viven las gemas. Compare estos datos:

ruby -e "puts Gem.path" 

gem env 

gem which sinatra 

Si usted es como mi configuración, se dará cuenta de que hay una entrada en caminos joya de env que no está en Gem.path, y eso es exactamente donde Sinatra se pretende ser. En mi caso, tuve que agregar

export GEM_HOME=/usr/lib/ruby/gems/1.9.1 

a mi .profile. Entonces todos estaban felices.

2

generalmente llegué a este error cuando olvido:

require 'rubygems' 

Sería útil si proporcionó la muestra de código real, sin embargo, lo gema desea requerir, y qué versión de Ruby estás usando si esto no resuelve el problema.

+1

a partir de 1.9 no es necesario que exija rubygems –

+0

@Isaac Cambron: es cierto, por eso solicité más detalles. El OP les ha proporcionado desde entonces. La respuesta claramente no es relevante para este usuario en particular en este momento, pero lo dejo como referencia :) – Matchu

1

Esto fue antes aquí en SO unas cuantas veces. El problema es que probablemente tengas dos versiones de Ruby. El uno está instalando la gema y el otro está tratando de usarlo. Para ello, en el terminal:

$ which -a ruby 

O esto:

$ which -a gem 

para ver si tiene más de una versión de rubí/joya instalado. Si es así, elimine una versión (a través del $ rm o el administrador de paquetes de su sistema).

+0

tengo un rubí y una gema :) –

3

Ejecutar

sudo gem install sinatra --verbose 

y anote la ruta en la que se está instalada la joya.

A continuación, intente esto en IRB

puts $LOAD_PATH 

y asegúrese de que la gema está instalada en uno de los directorios en $LOAD_PATH

y lo ideal es simplemente comenzar a usar http://rvm.beginrescueend.com/

+0

+1 Creo que es más fácil ajustar el conjunto de directorios en la ruta de la carga (como en mi respuesta), pero claramente esto también funcionará. –

+0

rvm me confundió –

0

Uso ruby ​​gems 1.8.7 para un proyecto. Estaba obteniendo el mismo error. Use la línea require 'rubygems'. Siempre debe ser la primera declaración obligatoria, de lo contrario, puede obtener un error.En mi código, que tenía

require 'watir' 
require 'rubygems' 
# more code 

Tengo el error - en `requerir ': No existe el fichero a cargar - Watir (LoadError). Cuando puse Rubygems primero, el error desapareció y todo funcionó. No sé por qué sucede esto.

Por cierto, probé la respuesta del usuario24359 y no me ayudó.

C:\code>ruby -e "puts Gem.path" 
-e:1: uninitialized constant Gem (NameError)