加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – “匿名模块没有名称被引用”是什么意思?

发布时间:2020-12-16 19:36:16 所属栏目:百科 来源:网络整理
导读:我正在升级我的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/
我正在升级我的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.

Google会为此找到各种各样的命中,但每个都属于一个特定的宝石或应用程序的特定修复.他们都没有解释什么是真正的意思.

>什么是“匿名模块”?
>这个错误信息来自哪里? (Ruby解释器本身?)
> Ruby 1.9有什么区别? (Rails 2.3.8与Ruby 1.8.7不会遇到这种情况)
>解决这个错误的一般/正确的方法是什么?

环境的第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

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

这个错误来自ActiveSupport模块,这可能表示active_support gem中的错误,或者可能指示其他一些代码正在使用ActiveSupport.单独的错误消息并没有提供足够的信息来识别罪魁祸首(至少对我来说,有更多的铁路经验的人可能能够提供更多的洞察力).

不知道有罪的代码,也很难说出这个错误为什么会弹出1.9,或者需要做什么来修复它.考虑到有很多未经维护和不足的宝石,尚未更新1.9,我怀疑ActiveSupport不是问题的根源.升级所有的1.9版本的宝石,然后尝试一次禁用其他宝石(如果可以),看看你是否仍然收到错误.

如果您提供您正在使用的其他宝石的列表,可能以前遇到错误的其他人可能会提供一些细节.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读