当前位置:  开发笔记 > 后端 > 正文

`const_missing':未初始化的常量(NameError)

如何解决《`const_missing':未初始化的常量(NameError)》经验,为你挑选了1个好方法。

每次我尝试使用"script/runner -e production ClassName.run"从我的rails 2.2 app的lib目录运行任何类时,我收到以下错误:

/usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/commands/runner.rb:47:  
/usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:89:in `const_missing': uninitialized constant ClassName (NameError)"

出于某种原因,当我运行它,因为我没有得到这个错误test,而不是production,和一切工作正常.

O是的,run是一种类方法,即def self.run .... end

有什么建议?



1> robertpostil..:

当ruby找不到类或模块时,会发生该错误.我从一开始:

    检查gem依赖项(它们对所有环境都相同吗?)

    在代码中搜索定义ClassName的任何内容,特别是模块,类和插件.

    在dev中禁用每个插件,是否有任何插件突然导致该错误?

    如果代码在lib中,则将lib require语句添加到production.rb以强制在生产中加载lib.

希望有所帮助.

更新只是总结评论它是选项4.

除非您只想在生产中加载lib,否则您应该考虑通过执行以下操作之一来确保所有环境加载lib:

    使用require中的require创建rails初始化程序(config/initializers下的.rb文件)

    通过启用和修改config.load_paths变量,将路径添加到config/environment.rb中的lib.

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有