无法在Rails控制台中加载Ruby EventMachine - 无需加载此类文件

Rus*_*ssK 1 ruby ruby-on-rails eventmachine ruby-on-rails-3

我无法在简单的测试程序中使用EventMachine.我正在运行Ruby 1.9.2(x86_64-darwin10.4.0)和Rails 3.0.1.安装了EventMachine(via gem install eventmachine),gem知道它:

gem list --local

*** LOCAL GEMS ***

abstract (1.0.0)
...
erubis (2.6.6)
eventmachine (0.12.10)
i18n (0.4.2)
...
tzinfo (0.3.23)

然而,当我启动rails控制台(通过rails console)并且只需要eventmachine时,它会爆炸:


ruby-1.9.2-p0 > require 'rubygems'
 => nil 
ruby-1.9.2-p0 > require 'eventmachine'
LoadError: no such file to load -- eventmachine
    from /Users/russ/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.1/lib/active_support/dependencies.rb:239:in 'require'
    from /Users/russ/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.1/lib/active_support/dependencies.rb:239:in 'block in require'
    from /Users/russ/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.1/lib/active_support/dependencies.rb:225:in 'block in load_dependency'
    from /Users/russ/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.1/lib/active_support/dependencies.rb:591:in 'new_constants_in'
    from /Users/russ/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.1/lib/active_support/dependencies.rb:225:in 'load_dependency'
    from /Users/russ/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.1/lib/active_support/dependencies.rb:239:in 'require'
    from (irb):2
    from /Users/russ/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.1/lib/rails/commands/console.rb:44:in 'start'
    from /Users/russ/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.1/lib/rails/commands/console.rb:8:in 'start'
    from /Users/russ/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.1/lib/rails/commands.rb:23:in '<top (required)>'
    from script/rails:6:in 'require'
    from script/rails:6:in '<main>'

我尝试在需要EventMachine的类中运行方法时获得相同的结果.EventMachine构建没有错误.我已经一遍又一遍地卸载了EventMachine和Ruby以及所有的宝石,但我无法完成这项工作.谁能指出我正确的方向?

-Russ

Jer*_*emy 7

Rails 3默认使用Bundler,这意味着您需要指定所有依赖项,Gemfile如下所示:

gem "eventmachine"

(安装任何未安装的通道bundle install).

Bundler处理依赖关系管理,这意味着你可以锁定你的gem版本,并避免很好地冲突,但相反,这意味着它不会加载你的Gemfile中没有指定的任何东西.

这也意味着如果你想在比webrick更好的东西上运行你的开发网络服务器,你可能想要在你的gemfile中添加这样的东西

group :development do
  gem 'mongrel'
  gem 'ruby-debug'
end
Run Code Online (Sandbox Code Playgroud)