在处理开发宝石的“路径”时,我经历了一些痛苦。这是文件夹结构
生产代码:
lib/gem_name/foo/templates/some_template.erb
lib/gem_name/foo/bar.rb
测试代码:
test/gem_name/foo/bar_test.rb
在 bar.rb 中,我通过以下方式阅读模板:
File.read("templates/some_template.erb") => Errno::ENOENT: No such file or directory
当我在 RubyMine 的 bar_test.rb 中运行单元测试时,它给了我错误:
Errno::ENOENT: No such file or directory - D:/.../test/gem_name/foo/templates/some_template.erb
显然路径中的测试是错误的。
我的问题是,
- 如何处理这个问题?
- 在开发 gem 时处理此类路径问题的最佳实践是什么?
编辑:
由于__FILE__
只返回它写入的文件的路径,目前我fname
在我需要的每个文件中定义(参见@ckruse 的答案)之类的函数。它有效,但并不优雅。也许有人会有比我更好的解决方案。如果是这样,请告诉我。:)