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
encode
should 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
...
Su '/ shared/bundle/ruby / 1.8 /' lo delata: su consola todavía está utilizando 1.8, no 1.9. –
Pero el mensaje dice "ruby-1.9.2-p180"? – coneybeare
@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. –