2013-03-14 2 views
0

Я только что установил Ruby 1.9.3-p374 в rbenv и собираюсь для приложения, над которым я работаю. Однако, когда пучок попадает в binding_of_caller я вижу следующее сообщение об ошибке:uninitialized constant RUBY_ENGINE

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb 
extconf.rb:7: uninitialized constant RUBY_ENGINE (NameError) 

работает echo $RUBY_ENGINE дает мне пустую строку. Установка вручную RUBY_ENGINE в ruby тоже не помогает.

Как я могу обойти эту проблему?

+0

Вы используете оболочку без входа? возможно, перехватчики оболочки из 'rbenv init' не выполняются. – dnozay

ответ

2

RUBY_ENGINE и RUBY_VERSION - оба константы, определенные рубином для запуска рубиновой программы. Это не переменные окружения, доступные на простой оболочке, которая объясняет, почему ваша команда echo возвращается с пустыми руками.

Кроме того, как видно из выдержки из stacktrace, вы используете , а не, используя Ruby 1.9.3, но по умолчанию Ruby 1.8 на Mac. Как и на Ruby 1.8, RUBY_ENGINE недоступен, вы получаете ошибку, которую наблюдаете.

И причина всего этого, вероятно, просто в том, что вы не переключили ti на самом деле используете свой рубиновый rbenv. Для этого вы должны попробовать что-то вроде rbenv global 1.9.3-p374 на своей оболочке и проверить, что ваш текущий рубин является правильным (например, путем проверки, например, ruby --version).

+0

попробовал 'rbenv global' и' ruby ​​-version' как ожидалось. Все та же проблема. –

0

Просто проверьте, определено ли оно в первую очередь. Что-то вроде этого

if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby' 
Смежные вопросы