什么"需要File.expand_path('../../ config/environment',__ FILE__)"完全正确?

Ash*_*Ash 10 ruby ruby-on-rails

我一直试图在更深层次上理解Ruby,并解构一个锅炉板应用程序,似乎是理解编写跨越不同文件和目录的Ruby应用程序的一些细节和优雅的好方法.

在我当前的应用程序中,对文件之间的"需求"的依赖性稍有问题(我发现我需要做一些事情,requires '../../../lib/helper'并且它有点难看.

我注意到rails应用程序似乎没有受此影响.

我注意到了这条线:

require File.expand_path('../../config/environment', __FILE__)
Run Code Online (Sandbox Code Playgroud)

当我谷歌它我发现很多关于Rails启动例程等的解释,但没有明确说明该行究竟是什么.

在我的旅行中,我也是这样说的:

$:.push File.join(File.dirname(__FILE__))
Run Code Online (Sandbox Code Playgroud)

我一直想知道这些可能是我的问题的潜在解决方案.任何人都可以解释他们到底做了什么吗?

小智 7

__FILE__是当前目录中文件的相对路径.File.expand_path会得到你文件的绝对路径,所以在你的问题上面需要environment.rb文件. $:包含所需路径的数组,因此$:.push将您给定的路径附加到所需路径列表中,以便您可以在应用程序中要求该文件.Rails在启动过程中推送各种文件.

  • `__FILE__`不是相对路径,它只返回代码所在的文件名. (6认同)