LoadError无法自动加载常量
似乎自动加载器正在加载lib / tools / address而不是我的模型
地址抛出以下错误
LoadError:无法自动加载常量Address,预期/lib/tools/address.rb来定义它
有人能告诉我我做错了什么。 我以为
地址将指向常量模型/ address.rb
和
Tools :: lib / tools / address.rb的地址
应用程序/模型/ address.rb
class Address blah end
LIB /工具/ address.rb
module Tools class Address blah blah end end
根据我的经验,使用具有相同名称但具有不同名称空间的多个常量可能会很棘手。 在您的情况下,您有两个Address
常量,一个位于顶层,另一个位于Tools
命名空间内。 这可能会混淆Rails自动加载器。
一些可能的方案:
如果要使用顶级Address
(即模型),请使用::Address
显式引用它。
如果这不起作用,您还可以使用require_dependency
为自动装带器提供您想要的提示。 在给你LoadError的文件的顶部,把这行:
require_dependency("address")
这是文档:
require_dependency
使用机制解释文件并将其定义的常量标记为自动加载。 file_name可以是字符串或响应to_path。
在代码中使用此方法,该代码绝对需要在该点定义某个常量。 一个典型的用例是为不同名称空间中具有相同相对名称的常量确定常量名称解析,否则其评估将依赖于加载顺序。
- Ruby on Rails服务器无法启动:dyld:惰性符号绑定失败:未找到符号:_mysql_get_client_info
- 使用Twitter Bootstrap和Simple Form 2.0在一行中输入多个输入
- Daemoninsing一个rake任务
- Rails项目中具有相同名称的模块和类
- Rails – 后台作业中的ActionDispatch :: Http :: UploadedFile
- Ruby on Rails – 存储应用程序配置
- 如何从rails中的给定列表创建选择框?
- heroku上的Google Vision API身份validation
- heroku命令存在于这些Ruby版本中?