Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Rails 4.1无法自动加载命名空间类

Rails 4.1无法自动加载命名空间类
EN

Stack Overflow用户
提问于 2014-06-08 14:08:26
回答 1查看 1.2K关注 0票数 4

我为嵌套资源的urls做了一个助手

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# app/urls/url.rb
module Url; end

然后

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# app/urls/base.rb
module Url
  class Base
    # common code
  end
end

当我试图从Url::Base继承时,会出现一个LoadError

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Unable to autoload constant Base, expected xxx/app/urls/base.rb to define it

我已经对它进行了一些调试,文件的来源是正确的,类被加载,但是检查被窃听了。这个错误似乎是在ActiveSupport::Dependencies#const_missing中产生的,它将Object传递为from_mod (<- -这是期望包含常数的变量),而不是Url

试试这个:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Url::Base # Raise LoadError
Url::Base # Works!

我还是不明白为什么const_missingObject而不是Url上触发.有人帮忙吗?我做错什么了?

编辑

好吧,再挖一遍,我知道发生了什么。Rails在PATH中搜索类似于PATH的文件路径;如果该文件不存在,它将尝试加载父模块(或类)中的常量,这就是为什么它将使用form_model = Object进行递归。

EN

回答 1

Stack Overflow用户

发布于 2014-06-08 15:13:18

好吧,再挖一遍,我知道发生了什么。Rails在PATH中搜索类似于PATH的文件路径;如果该文件不存在,它将尝试加载父模块(或类)中的常量,这就是为什么它将使用form_model = Object进行递归。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24111360

复制
相关文章
PHP命名空间与自动加载类详解
spl_autoload_register() 满足了此类需求。 它实际上创建了 autoload 函数的队列,按定义时的顺序逐个执行。相比之下, __autoload() 只可以定义一次。
用户2323866
2021/07/13
7300
PHP 命名空间与类自动加载实现
在 PHP 5.3 之前,要在一个 PHP 脚本中引入另一个 PHP 脚本中定义的代码(通常是函数或者类),需要借助 include、require、include_once、require_once 等语句,include 和 require 都可以通过指定路径引入一个 PHP 脚本,区别是 include 没有找到对应路径脚本时发出警告(E_WARNING),而 require 会抛出致命错误(E_COMPILE_ERROR),include_once/require_once 也是用于引入指定路径 PHP 脚本,与 include/require 的区别是如果指定路径已经包含过,不会再次包含,换言之,只会包含一次同一路径脚本,include_once 和 require_once 的区别与 include/require 一样。
学院君
2020/08/18
1K0
PHP 命名空间与类自动加载实现
检查命名空间和类
类%XML.Namespaces提供了两个类方法,可用于检查XML命名空间及其包含的类:
用户7741497
2022/07/05
4240
命名空间
c++基础_命名空间namespace 命名空间是用来组织和重用代码的编译单元 在编写代码时写的程序不可能所有的标识符都没有重名现象, 在多人协作开发时更加不可控, 尤其对于库来说问题更加严重. 为了解决重名现象, 通过命名空间来避免冲突! ---- 命名空间的定义: namespace 命名空间标识符 { ...命名空间成员(普通变量成员,函数成员,类成员...) } 注意: 命名空间标识符必须满足标识符命名规则和命名规范, 习惯名字唯一, 通常以开发团队的名字(项目名) 来命名. 命名
木杉乀
2021/05/06
1.4K0
命名空间介绍之七:网络命名空间
自从上次我们研究 Linux 命名空间以来已经有一段时间了。我们的系列缺少了一篇,现在补上:网络命名空间。顾名思义,网络命名空间将网络设备、地址、端口、路由、防火墙规则等的使用划分在不同的盒子,基本上是在一个单独运行的内核实例中虚拟化网络。网络命名空间在 2.6.24 版进入内核,约 5 年前;大概一年后,它们才进入黄金时段。从那以后,它们似乎在很大程度上被开发人员忽略了。
谛听
2019/11/03
3.5K0
命名空间介绍之七:网络命名空间
TS 4.1 新特性实现 Vuex 无限层级命名空间的 dispatch 类型推断。
前几天,TypeScript 发布了一项 4.1 版本的新特性,字符串模板类型,还没有了解过的小伙伴可以先去这篇看一下:TypeScript 4.1 新特性:字符串模板类型,Vuex 终于有救了?。
ssh_晨曦时梦见兮
2020/10/15
2.2K0
命名空间介绍之三:PID 命名空间
接着前两篇命名空间文章,现在看一下 PID 命名空间。与 PID 命名空间相关的全局资源就是进程 ID 数字空间。这意味着在不同 PID 命名空间中的进程可以有相同的进程 ID。PID 命名空间实现的容器可在主机之间迁移,并保持容器内的进程 ID 不变。
谛听
2019/10/29
3.5K0
命名空间介绍之三:PID 命名空间
命名空间介绍之五:用户命名空间
继续我们的命名空间系列文章,本文看一下用户命名空间,大部分实现于 Linux 3.8。(剩余的工作是 XFS 和其它文件系统中的一些改动;后者合并于 3.9)。用户命名空间与用户和组 ID 相映射。这意味着一个进程在某个用户命名空间内的用户和组 ID 可以与用户命名空间外的不同。最重要的是,一个进程可以在一个命名空间外有一个非 0 的用户 ID ,同时在命名空间内有一个为 0 的用户 ID;换句话说,进程在一个用户命名空间外没有特权,但在用户命名空间内有 root 特权。
谛听
2019/11/01
3.4K0
命名空间介绍之五:用户命名空间
PHP-自动加载类
在项目开发中,因为一个文件中只能写一个类,并且在执行过程中会有很多的类参与,如果一个一个的加载很麻烦,所以,就需要一个机制实现在PHP执行过程中自动加载需要的类。
cwl_java
2022/11/30
8070
PHP-自动加载类
php-自动加载类
PHP 提供了若干方式来自动加载包含还未加载的类的文件。 老的方法是使用名为 autoload() 魔术全局函数。 然而你一次仅能定义一个 autoload() 函数,因此如果你的程序包含一个也使用了 __autoload() 函数的库,就会发生冲突。 处理这个问题的正确方法是唯一地命名你的自动加载函数,然后使用 spl_autoload_register() 函数来注册它。 该函数允许定义多个 autoload() 这样的函数,因此你不必担心其他代码的 autoload() 函数。 test.php的内容
kdyonly
2023/03/03
8210
【C++】命名空间 namespace 与 标准流 iostream ( 命名空间概念简介 | 命名空间定义 | 命名空间使用 | iostream 中的命名空间分析 )
命名空间 namespace 又称为 名字空间 , 名称空间 , 名域 , 作用域 , 是 C++ 语言 对 C 语言 的扩展 之一 ;
韩曙亮
2023/10/15
8310
【C++】命名空间 namespace 与 标准流 iostream ( 命名空间概念简介 | 命名空间定义 | 命名空间使用 | iostream 中的命名空间分析 )
.NET Framework 类库——C#命名空间大全
引用地址:https://msdn.microsoft.com/zh-cn/library/gg145045.aspx C# using引用时,不知道有哪些命名空间,这下转载收集一篇,方面查找使用。 NET Framework 类库是一个由类、接口和值类型组成的库,通过该库中的内容可访问系统功能。它是生成 .NET Framework 应用程序、组件和控件的基础。类库中的命名空间和命名空间类别在下表中列出,在此参考中有详细记录。将按使用情况列出命名空间和类别,最常用的命名空间会先列出。 命名空间 命名空间
landv
2018/05/24
2.9K0
PHP命名空间
概述 什么是命名空间呢? 这个概念我第一次知道是在C++中. 首先, 为什么要用到命名空间呢? 当然是为了解决重名的问题了, 其实命名空间和Java中的包有着异曲同工之妙, Java中 a包下的Tes
烟草的香味
2019/07/25
2.3K0
PHP命名空间
js命名空间
start和stop在car下以名称空间命名:car.start()和car.stop()。
IT工作者
2021/12/29
1.7K0
PHP命名空间
本文是复习所写,并不会涵盖一些基础知识点 定义 命名空间就相当于操作系统中目录的概念 主要是为了解决以下两个问题: 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突 为很
码一
2022/06/06
2.5K0
PHP命名空间
Kubernetes命名空间
Kubernetes中提供了命名空间,但是如果你的团队规模比较小并且集群规模也不大,完全可以不用Namespaces而使用labels来区分不同的资源,随着项目增多、集群规模扩大、人员的增加,你才需要使用Namespaces,通过namespace你可以创建多个虚拟的集群。
大江小浪
2018/09/19
2.3K0
点击加载更多

相似问题

PHPUnit无法通过命名空间自动加载找到类

10

PHP OOP自动加载类命名空间问题

22

Rails在命名空间中不会自动加载模板

13

自动加载和命名空间

23

PHP命名空间自动加载

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文