ruby-on-rails – “匿名模块没有名称被引用”是什么意思?
我正在升级我的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会为此找到各种各样的命中,但每个都属于一个特定的宝石或应用程序的特定修复.他们都没有解释什么是真正的意思. >什么是“匿名模块”? 环境的第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版本的宝石,然后尝试一次禁用其他宝石(如果可以),看看你是否仍然收到错误. 如果您提供您正在使用的其他宝石的列表,可能以前遇到错误的其他人可能会提供一些细节. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- React学习之事件绑定处理机制(五)
- 基于Express+Socket.io+MongoDB的即时聊天系统的
- ruby-on-rails-3.2 – 为什么carmen-rails没有默
- ruby-on-rails-4 – Rails 4 Action Mailer Prev
- 数据结构与算法——排序算法之选择排序
- Oracle Cloud Control 12C 中的target信息查询
- 权限管理页面,ajax异步刷新,获取当前用户权限-ch
- Swift - 导航条(UINavigationBar)的使用
- c# – 在Entity Framework中使用简单查询,性能非
- 报错:Binary XML file line #7: Error inflatin