无法在 Rails 控制台中加载 Ruby EventMachine - 没有要加载的文件

Posted

技术标签:

【中文标题】无法在 Rails 控制台中加载 Ruby EventMachine - 没有要加载的文件【英文标题】:Cannot load Ruby EventMachine in Rails console - no such file to load 【发布时间】:2011-05-08 20:23:52 【问题描述】:

我无法在简单的测试程序中要求 EventMachine。我正在运行 Ruby 1.9.2 (x86_64-darwin10.4.0) 和 Rails 3.0.1。 EventMachine 已安装(通过 gem install eventmachine)并且 gem 知道它:

宝石列表--本地 *** 当地宝石 *** 摘要 (1.0.0) ... 厄鲁比斯 (2.6.6) 事件机(0.12.10) i18n (0.4.2) ... tzinfo (0.3.23)

然而,当我启动 rails 控制台(通过rails console)并且只需要 eventmachine 时,它​​就崩溃了:

ruby-1.9.2-p0 > 需要'rubygems' => 无 ruby-1.9.2-p0 > 需要'eventmachine' LoadError:没有要加载的文件--eventmachine 来自 /Users/russ/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.1/lib/active_support/dependencies.rb:239:in 'require' 来自 /Users/russ/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.1/lib/active_support/dependencies.rb:239:in 'block in require' 来自 /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' 来自 /Users/russ/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.1/lib/active_support/dependencies.rb:591:in 'new_constants_in' 来自 /Users/russ/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.1/lib/active_support/dependencies.rb:225:in 'load_dependency' 来自 /Users/russ/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.1/lib/active_support/dependencies.rb:239:in 'require' 来自 (irb):2 来自 /Users/russ/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.1/lib/rails/commands/console.rb:44:in 'start' 来自 /Users/russ/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.1/lib/rails/commands/console.rb:8:in 'start' 来自 /Users/russ/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.1/lib/rails/commands.rb:23:in '' 来自脚本/rails:6:in 'require' 来自脚本/rails:6:in '
'

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

-罗斯

【问题讨论】:

【参考方案1】:

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

gem "eventmachine"

(安装任何未通过bundle install 安装的)。

Bundler 处理依赖项管理,这意味着您可以锁定您的 gem 版本,并很好地避免冲突,但相反,这意味着它不会加载任何未在 Gemfile 中指定的内容。

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

group :development do
  gem 'mongrel'
  gem 'ruby-debug'
end

【讨论】:

非常感谢。我刚刚升级到 Rails 3,并没有意识到这个要求。【参考方案2】:

您是否尝试将其放入您的 rails 应用程序的 gemfile 并进行捆绑安装?

【讨论】:

【参考方案3】:

在 windows 中删除 Ruby x64。 重新安装 Ruby x86。

观众。 https://github.com/eventmachine/eventmachine/blob/master/ext/extconf.rb#L78-L90

【讨论】:

以上是关于无法在 Rails 控制台中加载 Ruby EventMachine - 没有要加载的文件的主要内容,如果未能解决你的问题,请参考以下文章

ruby 解决方法是在bundler环境中加载irb特定的gem(在.irbrc中加载​​),比如rails3 console

在 Rails 控制台中加载和使用夹具

我的控制器索引视图的背景图像未在 rails 4 应用程序中加载?

.env 未使用 rspec 在 Rails 的测试环境中加载

在RAILSu ROOT/lib中加载所有*.jar文件

在 Rails 引擎中加载多个配置文件