2010-09-06 19 views
5

Cada vez que inicio mis aplicaciones de Rails obtengo LoadError con la siguiente salida.Rubygems. LoadError in Rails

En Los Carriles 2.3.8:

 
no such file to load -- sqlite3/sqlite3_native 
<internal:lib/rubygems/custom_require>:29:in `require' 

En Los Carriles 3.0.0:

 
no such file to load -- bundler 
<internal:lib/rubygems/custom_require>:29:in `require' 

que ejecutan las aplicaciones en el modo de producción en una máquina de desarrollo usando Nginx + pasajeros.

¿Cuál es el motivo de esta incidencia? ¿Cómo puedo resolverlo?

Gracias.

Debian GNU/Linux 5.0.6;

Ruby 1.9.2;

Rubygems 1.3.7;

Ruby on Rails 2.3.8, 3.0.0;

Nginx 0.8.50;

Pasajero 2.2.15;

sqlite3-ruby 1.3.1;

bundler 1.0.0.rc.6.

Updated


Todas mis joyas es instalado por el usuario sin privilegios en el directorio local /home/<usernam>/.gem. Si ayuda, aquí está la salida gem env:

 
RubyGems Environment: 
    - RUBYGEMS VERSION: 1.3.7 
    - RUBY VERSION: 1.9.2 (2010-08-18 patchlevel 0) [i686-linux] 
    - INSTALLATION DIRECTORY: /home/<username>/.gem 
    - RUBY EXECUTABLE: /usr/local/bin/ruby 
    - EXECUTABLE DIRECTORY: /home/<username>/.gem/bin 
    - RUBYGEMS PLATFORMS: 
    - ruby 
    - x86-linux 
    - GEM PATHS: 
    - /home/<username>/.gem 
    - GEM CONFIGURATION: 
    - :update_sources => true 
    - :verbose => true 
    - :benchmark => false 
    - :backtrace => false 
    - :bulk_threshold => 1000 
    - "gem" => "--no-ri --no-rdoc" 
    - :gemhome => "/home/<username>/.gem" 
    - :gempath => ["/home/<username>/.gem"] 
    - REMOTE SOURCES: 
    - http://rubygems.org/ 

Actualizado


abordé el problema. Su fuente fue que definí una ruta de gema personalizada. Es decir he añadido al archivo ~/.gemrc las siguientes líneas:

 
:gemhome: /home/<username>/.gem 
:gempaths: 
    - /home/<username>/.gem 

lo tanto todas mis joyas se colocó en el directorio especificado, pero no el que viene por defecto. Por alguna razón, Rubygems no lo encontró allí y se levantó una excepción.

Cuando eliminé esas líneas del archivo, se establecieron las rutas predeterminadas para Rubygems y, después de instalar todas las gemas necesarias y cargar mis aplicaciones de Rails, todas comenzaron a funcionar.

Una vez más, las condiciones de error son:

  1. Nginx + vehículos de pasajeros;
  2. La gempath está configurada en /home/<unprivileged_user>/.gem en ~/.gemrc;
  3. Se crea una secuencia de comandos init.d y se agrega a la secuencia de inicio (update-rc.d nginx defaults);
  4. El sistema se reinicia, el servidor se inicia atomaticly;
  5. http://localhost/my_rails_app;
  6. LoadError; no se carga ese archivo - < gem_name >; < interno: lib/rubygems/custom_require >: 29: en `require '.

¿Por qué Rubygems no puede encontrar gemas en la ubicación personalizada pero puede encontrarlas en el valor predeterminado? Esa es la pregunta.

Respuesta

0

Revise su sistema para localizar dónde están instalados sus rubíes y gemas (puede hacerlo por "qué rubí" y "qué gema"). Por lo general, están instalados en la misma carpeta (/ usr/bin o/usr/local). Si están en diferentes ubicaciones, puede haber un error de carga. Sólo una sugerencia.

+0

Sudo no tiene nada que ver con la instalación, y nada aquí implica que está usando un sistema que usa sudo (es decir, Ubuntu, ya que la mayoría usa su). – alternative

+0

Están en la misma carpeta ('/ usr/local/bin'). – Shamaoke

2

Yo también tuve este problema cuando uso RVM: debo haber especificado un gemset o algo así y no hacerlo específico para el proyecto. En cualquier caso, lea esto rvm guide si desea conocer los conceptos básicos de RVM e intente especificar un nuevo gemset para su carpeta/proyecto actual, instale una nueva gema de rieles en ese gemset y luego use ese gemset. Por ejemplo, para crear un nuevo gemset para los carriles versión 2.3.8:


$ RVM gemset crear rails238


$ RVM [email protected]


$ gem install rails -v 2.3.8


Luego, si todo fue según el tipo de plan rvm gemset, use [gemsetName], o haga rvm gemset list para ver una lista de gemas instaladas, y para ver si los rieles funcionan bien, intente rails -v y vea los rieles 2.3.8

+0

El OP no ha indicado que están utilizando RVM. No siempre es posible usar RVM en un servidor de producción. – Jits

Cuestiones relacionadas