gpt4 book ai didi

ruby-on-rails - "Anonymous modules have no name to be referenced by"到底是什么意思?

转载 作者:数据小太阳 更新时间:2023-10-29 06:41:45 24 4
gpt4 key购买 nike

我正在升级我的 Rails 应用程序以使用 Ruby 1.9,但我一直遇到这样的错误:

Anonymous modules have no name to be referenced by
/home/foo/.gem/ruby/1.9.1/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:585:in `to_constant_name'
/home/foo/.gem/ruby/1.9.1/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:391:in `qualified_name_for'
/home/foo/.gem/ruby/1.9.1/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:104:in `rescue in const_missing'
/home/foo/.gem/ruby/1.9.1/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:94:in `const_missing'
/home/foo/app/config/environment.rb:66:in `block in <top (required)>'
etc.

谷歌为此找到了各种匹配项,但每个匹配项都与针对某个特定 gem 或应用程序的特定修复有关。他们都没有解释消息的真正含义。

  • 什么是“匿名模块”?
  • 这条错误信息是从哪里来的? (Ruby 解释器本身?)
  • 导致这种情况的 Ruby 1.9 有何不同? (使用 Ruby 1.8.7 的 Rails 2.3.8 不会遇到这种情况。)
  • 修复此错误的一般/正确方法是什么?

environment.rb的第66行是super_exception_notifier的配置(旧版本,2.0.8):

ExceptionNotifier.configure_exception_notifier do |config|
config[:sender_address] = %("Foo" <foo@foo.com>)
config[:exception_recipients] = %w(foo@foo.com)
config[:skip_local_notification] = false
end

据我所知,ExceptionNotifier 是未定义的,ActiveSupport 正试图神奇地加载它,但失败了,然后再次失败,试图打印一条不错的错误消息。

最佳答案

匿名模块是这样声明的模块:

Fred = Module.new do
def meth1
"hello"
end
def meth2
"bye"
end
end

而不是使用常规的 Module mod_name <block>句法。由于它们没有模块名称,因此您无法检索模块名称。 to_constant_name正在尝试调用 desc.name.blank?其中 desc是一个匿名模块(没有 name )。

此错误来自 ActiveSupport 模块,这可能表明 active_support gem 中存在错误,或者可能表明某些其他代码片段未正确使用 ActiveSupport。错误消息本身并不能提供足够的信息来识别罪魁祸首(至少对我来说,具有更多 Rails 经验的人可能能够提供更多见解)。

在不知道有问题的代码的情况下,也很难确切地说出为什么这个错误会在 1.9 中弹出,或者需要做些什么来修复它。考虑到有很多尚未针对 1.9 更新的未维护和维护不足的 gem,我怀疑 ActiveSupport 不是问题的根源。升级所有具有 1.9 兼容版本的 gem,然后尝试一次禁用一个其他 gem(如果可以的话),看看是否仍然出现错误。

如果您提供了您正在使用的其他 gem 的列表,那么之前可能遇到过该错误的其他人可能能够提供一些详细信息。

关于ruby-on-rails - "Anonymous modules have no name to be referenced by"到底是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4001778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com