Ruby:EventMachine没有加载

时间:2011-07-14 22:34:59

标签: ruby eventmachine

更新:

我找到了简单的答案,这完全是我自己的错:我将上面的代码存储在名为“eventmachine.rb”的文件中。因此,当我需要'eventmachine'时,它只导入了同一个文件,该文件不包含EventMachine的定义。

所以这不是关于EventMachine的帖子。

原始邮件:

对不起,但是发生了什么事?

require 'rubygems'
require 'eventmachine'

EventMachine

给出

uninitialized constant EventMachine
当我运行“ruby myfile.rb”时,在TextMate和控制台上

但如果我在IRB中键入相同的内容,我会得到

=> EventMachine

...

我非常沮丧,因为我遵循了http://blog.carlmercier.com/2007/12/14/how-to-fix-that-rubygems-mess-on-leopard/上的rash指令 - 消除了我的Ruby和Rubygems环境并从MacPorts重新安装它们。 IRB仍然有效,TextMate /命令行仍然以同样的方式失败。我甚至将我的TextMate PATH缩减到现在安装Ruby,Gem和IRB的地方:/ opt / local / bin - 这是哪个报告。

最后,当我

puts Gem.path
在IRB,TextMate或控制台上

,我得到相同的路径。

3 个答案:

答案 0 :(得分:4)

我找到了简单的答案,这完全是我自己的错: 我将上面的代码存储在一个名为“eventmachine.rb”的文件中。因此,当我需要'eventmachine'时,它只导入了同一个文件,该文件不包含EventMachine的定义。

答案 1 :(得分:1)

你安装了宝石吗?

gem install eventmachine

通常,您显示的代码中的错误是因为行

require 'eventmachine'

失败,并且没有定义类/模块常量EventMachine。

此外,如果您正在运行ruby 1.9,则不再需要

require 'rubygems'

答案 2 :(得分:0)

我不明白为什么消息是“未初始化的常量”,但问题是你没有提供任何东西来运行。我的代码出现了同样的错误,但如果我将其更改为:

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

然后它完全按照我的预期工作 - 它每秒打印10个点。