在ruby中从一个目录中获取所有文件的最好方法是什么?


当前回答

Dir[File.join(__dir__, "/app/**/*.rb")].each do |file|
  require file
end

这将在您的本地机器和不使用相对路径的远程(如Heroku)上递归地工作。

其他回答

而不是像在一些答案连接路径,我使用File.expand_path:

Dir[File.expand_path('importers/*.rb', File.dirname(__FILE__))].each do |file|
  require file
end

更新:

而不是使用文件。Dirname你可以这样做:

Dir[File.expand_path('../importers/*.rb', __FILE__)].each do |file|
  require file
end

在哪里. .删除__FILE__的文件名。

Dir[File.join(__dir__, "/app/**/*.rb")].each do |file|
  require file
end

这将在您的本地机器和不使用相对路径的远程(如Heroku)上递归地工作。

如何:

Dir["/path/to/directory/*.rb"].each {|file| require file }

我已经晚了几年,但我有点喜欢这个单行解决方案,我用来让rails包括app/workers/concerns中的所有内容:

目录[Rails.root.join *%w(应用程序worker关注点*)]。每个{|f| require f}

在Rails中,你可以做:

Dir[Rails.root.join('lib', 'ext', '*.rb')].each { |file| require file }

更新:修正了@Jiggneshh Gohel删除斜杠的建议。