在ruby中从一个目录中获取所有文件的最好方法是什么?
当前回答
如果它是一个相对于执行要求的文件的目录(例如,你想加载lib目录中的所有文件):
Dir[File.dirname(__FILE__) + '/lib/*.rb'].each {|file| require file }
编辑:根据下面的评论,更新版本:
Dir[File.join(__dir__, 'lib', '*.rb')].each { |file| require file }
其他回答
我已经晚了几年,但我有点喜欢这个单行解决方案,我用来让rails包括app/workers/concerns中的所有内容:
目录[Rails.root.join *%w(应用程序worker关注点*)]。每个{|f| require f}
还有:require_relative *Dir['相对路径']呢?
如何:
Dir["/path/to/directory/*.rb"].each {|file| require file }
如果它是一个相对于执行要求的文件的目录(例如,你想加载lib目录中的所有文件):
Dir[File.dirname(__FILE__) + '/lib/*.rb'].each {|file| require file }
编辑:根据下面的评论,更新版本:
Dir[File.join(__dir__, 'lib', '*.rb')].each { |file| require file }
而不是像在一些答案连接路径,我使用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__的文件名。