«Неинициализированное постоянное кодирование» с использованием rvm, ruby ​​1.9.2, bundler и passenger - PullRequest
5 голосов
/ 19 июня 2011

Я нахожусь в конце остроумия и обращаюсь ко всем вам за помощью по этой проблеме кодирования f * # $ ^.

Я работаю на частном сервере с правами root на Dreamhost.Вот немного о моей среде и версиях.

$ `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

Помимо этой ошибки, мое приложение rails работает нормально без проблем.Однако, когда я пытаюсь изменить кодировку строки с помощью метода encode, это:

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

encode должно быть определено , но это не так!Encoding найдено, если я попытаюсь в irb:

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

Но если я попытаюсь использовать консоль rails через bundle exec, Encoding не будет найдено:

$ 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

Очевидно, что установка не загружает что-то правильно, но я не уверен, где искать, чтобы выяснить это.Что мне здесь не хватает?

ОБНОВЛЕНИЕ 6/19/2011

Как отметил Райан Бигг, любопытно, что путь к каталогам для драгоценных камней равен 1.8.Однако запуск bundle exec показывает, что упаковщик использует правильные версии ruby ​​и rails:

$ 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

Очевидно, что здесь что-то не так ... Я просто не знаю, что.

ОБНОВЛЕНИЕ 6/26/2011

Симус попросил $ LOAD_PATH

ОБНОВЛЕНИЕ 26.06.2011 (позже)

Симус попросил Gemfile.lock и pp ENV … В выводе ENV я обнаружил, что GEM_PATH был неправильным.В моем файле среды staging.rb у меня есть:

GEM_HOME = "/home/[REDACTED]/.rvm/gems/ruby-1.9.2-p180@[REDACTED]"
GEM_PATH = "/home/[REDACTED]/.rvm/gems/ruby-1.9.2-p180@[REDACTED]:/home/[REDACTED]/.rvm/gems/ruby-1.9.2-p180@global"

… что явно не соблюдается.Нигде в моем коде нет упоминания GEM_HOME или GEM_PATH

ОБНОВЛЕНИЕ 6/27/2011

Симус попросил .bundle/config содержания ...

1 Ответ

0 голосов
/ 27 июня 2011

ОБНОВЛЕНО та же идея (что GEM_HOME испорчено), но больше предложений

Ваш GEM_HOME испорчен, возможно, потому что ваш PATH испортилВы можете попробовать установить следующую переменную окружения в вашей оболочке

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

Затем запустить

$ bundle install

Если это не сработает, попробуйте также установить это вshell

$ export GEM_HOME=[your ruby 1.9 gem home]

, а затем повторно запустите

$ bundle install

Новые идеи из этого ответа: При использовании RVM, упаковщик не устанавливается в правильном наборе драгоценных камней, когда драгоценные камни устанавливаются в другомрубиновая версия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...