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

时间:2014-04-07 08:16:52

标签: ruby-on-rails ruby

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

在我当前的应用中,依赖于'需要'文件之间存在一些问题(我发现我需要做requires '../../../lib/helper'这样的事情并且它有点难看。

我注意到rails应用程序似乎不会受此影响。

我注意到了这一行:

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

当我谷歌它时,我发现了许多关于Rails启动例程等的解释,但没有明确描述该行的确切内容。

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

$:.push File.join(File.dirname(__FILE__))

我一直想知道这些是否可能是我问题的潜在解决方案。任何人都可以解释他们做什么究竟是什么?

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:0)

File.expand_path('../../config/environment', __FILE__)返回文件environment.rb的绝对路径,该文件位于'config'目录中,该目录位于包含此代码的文件下方两级。

require然后允许您访问文件environment.rb中定义的ruby代码。