正确的方法来自动加载嵌套目录。为什么尾随斜线呢?

时间:2016-09-08 10:27:03

标签: ruby-on-rails

这有效(带有正斜杠):

config.autoload_paths += Dir[Rails.root.join("lib", "**/")]

这不起作用(没有斜杠):

config.autoload_paths += Dir[Rails.root.join("lib", "**")]

为什么?

1 个答案:

答案 0 :(得分:5)

尾部斜杠表示Dir[]它应该递归列出目录。

让我们深入了解一下。

Rails.root.join("lib", "**")

返回#{Rails.root}/lib/**的路径,而

Rails.root.join("lib", "**/")

返回#{Rails.root}/lib/**/的路径。

然后将其传递给Dir[]documentation中的**表示它以递归方式匹配目录。但是没有尾随斜杠,它似乎与*具有相同的行为。如果您执行**/*.rb之类的操作,则列出递归,所有以.rb结尾的文件。所以你真正用尾部斜杠指定的是,你想要搜索目录,因为它们总是以/结尾。