2011-06-19 8 views
5

Estoy llegando al final aquí y estoy recurriendo a todos ustedes para obtener ayuda con este problema de codificación f * # $ ^."Codificación constante no inicializada" usando rvm, ruby ​​1.9.2, bundler y pasajero

Me estoy ejecutando en un servidor privado con permisos de root en Dreamhost. Aquí hay un poco sobre mi entorno y versiones.

$ `which ruby` -v 
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux] 
$ `which bundle` -v 
Bundler version 1.0.15 
$ `which rails` -v 
Rails 3.0.9 

Aparte de este error, mi aplicación de rieles funciona bien sin problemas. Sin embargo, cuando trato de cambiar la codificación de una cadena utilizando el método encode que:

NoMethodError: undefined method `encode' for "foobar":String 

encodeshould be definido, pero no lo es! Encoding se encuentra si lo intento en irb:

$ irb 
ruby-1.9.2-p180 :001 > Encoding 
=> Encoding 
ruby-1.9.2-p180 :002 > "foobar".encode('utf-8') 
=> "foobar" 

Pero si intento usar la consola rieles a través ejecutivo de paquete, Encoding no se ha hallado;

$ bundle exec rails c staging 
Loading staging environment (Rails 3.0.9) 
ruby-1.9.2-p180 :001 > Encoding 
NameError: uninitialized constant Encoding 
    from /[REDACTED]/shared/bundle/ruby/1.8/gems/aws-s3-0.6.2/lib/aws/s3/extensions.rb:206:in `const_missing' 
    from (irb):1 
ruby-1.9.2-p180 :002 > "foobar".encode('utf-8') 
    NoMethodError: undefined method `encode' for "foobar":String 

Obviamente, la configuración no se está cargando algo de manera correcta pero No estoy seguro de dónde buscar para resolverlo. ¿Que me estoy perdiendo aqui?


ACTUALIZACIÓN 6/19/2011

Como Ryan Bigg señaló, es curioso que la ruta del directorio de las gemas es 1.8. Sin embargo, ejecutar bundle exec muestra que bundler está utilizando el rubí correcta y rieles versiones:

$ bundle exec which ruby 
/path/to/.rvm/rubies/ruby-1.9.2-p180/bin/ruby 
$ bundle exec `which ruby` -v 
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux] 
$ bundle exec which rails 
/path/to/shared/bundle/ruby/1.8/bin/rails 
$ bundle exec `which rails` -v 
Rails 3.0.9 

Es evidente que algo es poco firme aquí ... Es sólo que no sé qué.


ACTUALIZACIÓN 6/26/2011

Seamus pidió la $LOAD_PATH ...


ACTUALIZACIÓN 26/06/2011 (más tarde)

Seamus pidió el Gemfile.lock y pp ENV ... En la salida ENV, encontré que el GEM_PATH no era correcto. En mi archivo de entorno staging.rb, que tengo:

GEM_HOME = "/home/[REDACTED]/.rvm/gems/[email protected][REDACTED]" 
GEM_PATH = "/home/[REDACTED]/.rvm/gems/[email protected][REDACTED]:/home/[REDACTED]/.rvm/gems/[email protected]" 

... que es, obviamente, no está cumpliendo.En ningún otro lugar en mi código no es una mención de GEM_HOME o GEM_PATH


ACTUALIZACIÓN 6/27/2011

Seamus pidió los contenidos .bundle/config ...

+2

Su '/ shared/bundle/ruby ​​/ 1.8 /' lo delata: su consola todavía está utilizando 1.8, no 1.9. –

+0

Pero el mensaje dice "ruby-1.9.2-p180"? – coneybeare

+0

@coneybeare: ¿Pero el '/ shared/bundle/ruby ​​/ 1.8' dice 1.8? Elimina '/ shared/bundle/ruby ​​/ 1.8' si no lo estás usando. Es posible que deba ejecutar 'bundle install' de nuevo. –

Respuesta

0

ACTUALIZADO misma idea (que GEM_HOME está en mal estado), pero más sugerencias

Su GEM_HOME está en mal estado, posiblemente porque su RUTA está en mal estado. Usted podría tratar de establecer la variable de entorno en su concha

$ export PATH=[your current path but with rvm's ruby 1.9 at the front] 

A continuación, ejecute

$ bundle install 

Si eso no funciona, intente también establecer esto en su concha

$ export GEM_HOME=[your ruby 1.9 gem home] 

y luego volver a ejecutar

$ bundle install 

Nuevas ideas de esta respuesta: Using RVM, bundler does not install in proper gemset when gems are installed in a different ruby version

+0

No sirvió de nada. Eliminé mi carpeta compartida/paquete y volví a ejecutar el comando de instalación del paquete. Todavía lo establece como 1.8. Creo que la ruta de la gema solo tiene 1.8 como nombre, aunque no como contenido. Dentro de la carpeta, todas las gemas están bien y son las más recientes. – coneybeare

+0

Para que quede claro, la forma en que revisé esto es editar el archivo boot.rb como se indica, eliminar el directorio del paquete compartido, rehacer una instalación del paquete, luego verificar en los raíles c si existía Codificación. – coneybeare

+0

¿Ha desinstalado y reinstalado totalmente la gema del paquete? ¿Cuáles son los contenidos de su archivo .bundle/config, si tiene uno? –

Cuestiones relacionadas