在ruby中从一个目录中获取所有文件的最好方法是什么?
当前回答
如何:
Dir["/path/to/directory/*.rb"].each {|file| require file }
其他回答
如何:
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 }
还有:require_relative *Dir['相对路径']呢?
Dir[File.dirname(__FILE__) + '/../lib/*.rb'].each do |file|
require File.basename(file, File.extname(file))
end
如果您不剥离扩展名,那么您可能会需要相同的文件两次(ruby不会意识到“foo”和“foo. exe”。Rb”是相同的文件)。两次要求相同的文件可能会导致错误的警告(例如。"警告:已初始化的常量")。
而不是像在一些答案连接路径,我使用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__的文件名。
推荐文章
- 我如何让红宝石打印一个完整的回溯而不是截断一个?
- 如何从Python包内读取(静态)文件?
- 如何使用RSpec的should_raise与任何类型的异常?
- 如何创建退出消息
- 忽略GEM,因为没有构建它的扩展
- 为什么我得到“Pickle - EOFError: run out of input”读取一个空文件?
- 在Gem::Specification.reset期间未解决的规格:
- Delete_all vs destroy_all
- 双引号vs单引号
- 用any可以吗?'来检查数组是否为空?
- Rails获取“each”循环的索引
- c#测试用户是否有对文件夹的写权限
- 写字符串到文本文件,并确保它总是覆盖现有的内容。
- 从另一个文件导入变量?
- Ruby类实例变量与类变量