为什么我们需要双重冒号操作符在文件中的config.ru在Rails应用程序中?
问题描述:
当创建Rails应用程序,存在config.ru
文件中的一行:为什么我们需要双重冒号操作符在文件中的config.ru在Rails应用程序中?
require ::File.expand_path('../config/environment', __FILE__)
你能不能解释一下,为什么我们需要::File
并不仅仅是File
?将require File.expand_path
工作?
答
::
开头代表主名称空间。假设当前环境在模块A
内。如果你只有File
,那么它将首先查找A::File
,并且只有当这个常量不存在时才会在主名称空间中查找File
。另一方面,::File
在主名称空间中引用File
,而不管是否存在A::File
等。
我明白'::'运算符是什么。问题是关于特定的用法。我们是否需要它在'config.ru'中的'File'前面? 'File'与'File'相比有多不同? –