Ruby: EventMachine не загружается - PullRequest
1 голос
/ 15 июля 2011

UPDATE:

Я нашел простой ответ, и это полностью моя вина: я сохранил приведенный выше код в файле с именем "eventmachine.rb". Таким образом, когда мне потребовался «eventmachine», он просто импортировал тот же файл, который не содержит определения для EventMachine.

Так что на самом деле это не пост о EventMachine.

ОРИГИНАЛЬНАЯ ПОЧТА:

Извините, но что происходит?

require 'rubygems'
require 'eventmachine'

EventMachine

1012 * дает *

uninitialized constant EventMachine

в TextMate и на консоли, когда я запускаю "ruby myfile.rb".

Но если я введу то же самое в IRB, я получу

=> EventMachine

.

...

Я был настолько расстроен, что следовал необдуманным инструкциям на http://blog.carlmercier.com/2007/12/14/how-to-fix-that-rubygems-mess-on-leopard/ - уничтожая мои среды Ruby и Rubygems и переустанавливая их из MacPorts. IRB все еще работает, и TextMate / командная строка по-прежнему не работает таким же образом. Я даже сократил мой путь TextMate PATH до одного места, где сейчас установлены Ruby, Gem и IRB: / opt / local / bin - что и есть что сообщает.

Наконец, когда я

puts Gem.path

на IRB, TextMate или консоли, я получаю тот же путь.

Ответы [ 3 ]

4 голосов
/ 16 июля 2011

Я нашел простой ответ, и это полностью моя вина: я сохранил приведенный выше код в файле с именем "eventmachine.rb".Таким образом, когда мне потребовался «eventmachine», он просто импортировал тот же файл, который не содержит определения для EventMachine.

1 голос
/ 15 июля 2011

Установили ли вы гем?

gem install eventmachine

Как правило, ошибка, подобная той, что показана в коде, который вы показываете, заключается в том, что строка

require 'eventmachine'

не работает и эта константа класса / модуля, EventMachine, не определено.

Также, если вы используете ruby ​​1.9, вам больше не нужно иметь

require 'rubygems'
0 голосов
/ 15 июля 2011

Я не понимаю, почему сообщение «Неинициализированная константа», но проблема в том, что вы не предоставили ничего для запуска. Я получаю ту же ошибку с вашим кодом, но если я изменю ее на:

EventMachine::run{
   EventMachine::add_periodic_timer( 0.1) { 
    print '.'
   }
}

тогда он работает точно так, как я ожидаю - он печатает 10 точек в секунду.

...