在ruby中从一个目录中获取所有文件的最好方法是什么?
当前回答
在Rails中,你可以做:
Dir[Rails.root.join('lib', 'ext', '*.rb')].each { |file| require file }
更新:修正了@Jiggneshh Gohel删除斜杠的建议。
其他回答
在Rails中,你可以做:
Dir[Rails.root.join('lib', 'ext', '*.rb')].each { |file| require file }
更新:修正了@Jiggneshh Gohel删除斜杠的建议。
试试require_all gem:
http://github.com/jarmo/require_all https://rubygems.org/gems/require_all
它让你简单地:
require_all 'path/to/directory'
Dir.glob(File.join('path', '**', '*.rb'), &method(:require))
或者,如果你想要将文件加载到特定的文件夹:
Dir.glob(File.join('path', '{folder1,folder2}', '**', '*.rb'), &method(:require))
解释:
Dir。Glob以block作为参数。
方法(:require)将返回require方法。
&method(:require)将方法转换为块。
而不是像在一些答案连接路径,我使用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)上递归地工作。
推荐文章
- 我如何让红宝石打印一个完整的回溯而不是截断一个?
- 如何从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类实例变量与类变量