更新:
我找到了简单的答案,这完全是我自己的错:我将上面的代码存储在名为“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或控制台上,我得到相同的路径。
答案 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个点。