我知道我可以使用目录中的所有文件
Dir['path/to/files/**/*.rb'].each { |file| require file }
Run Code Online (Sandbox Code Playgroud)
但是,我正在尝试为gem设置文件执行此操作,如下所示:
class MyGem
module NS; end
end
Dir['lib/my_gem/files/**/*.rb'].each { |file| require file }
Run Code Online (Sandbox Code Playgroud)
(其中所有文件lib/my_gem/files都在MyGem :: NS下命名空间).使用如下所示的目录结构:
lib
|-- my_gem
| |-- files
| | |-- file1.rb
| | |-- file2.rb
| | |-- file3.rb
| | `-- ... (many more)
`-- my_gem.rb
my_gem.gemspec
Run Code Online (Sandbox Code Playgroud)
而且,Dir当我在另一个文件中需要我的gem时,该命令似乎不起作用,因为它似乎在我的项目根目录中查找运行时的文件路径(我需要我的宝石的任何项目).
我怎么能要求中的所有文件lib/my_gem/files中lib/my_gem.rb?
Jos*_*eek 13
Rubygems有一个名为find_files的工具,允许您在加载路径中搜索任何内容:
Gem.find_files("my_gem/files/**/*.rb").each { |path| require path }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4739 次 |
| 最近记录: |