为什么我们需要双重冒号操作符在文件中的config.ru在Rails应用程序中?

问题描述:

当创建Rails应用程序,存在config.ru文件中的一行:为什么我们需要双重冒号操作符在文件中的config.ru在Rails应用程序中?

require ::File.expand_path('../config/environment', __FILE__) 

你能不能解释一下,为什么我们需要::File并不仅仅是File?将require File.expand_path工作?

+0

我明白'::'运算符是什么。问题是关于特定的用法。我们是否需要它在'config.ru'中的'File'前面? 'File'与'File'相比有多不同? –

::开头代表主名称空间。假设当前环境在模块A内。如果你只有File,那么它将首先查找A::File,并且只有当这个常量不存在时才会在主名称空间中查找File。另一方面,::File在主名称空间中引用File,而不管是否存在A::File等。