1
在處理開發寶石的「路徑」時,我經歷了一些痛苦。 這裏是文件夾結構開發寶石時讀取文件(在lib下)的最佳做法是什麼?
生產代碼:
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
顯然測試中的路徑是錯誤的。
我的問題是,
- 如何處理這個問題?
- 什麼是最好的做法處理 等路徑問題,同時開發寶石?
編輯:
由於__FILE__
只返回它寫入的文件的路徑,目前我定義fname
(見@ ckruse的回答)喜歡在每一個文件,我需要它的功能。 它的作品,但它不優雅。也許有人會有比我更好的解決方案。如果是的話,請讓我知道:)
謝謝@ckruse。我知道我可以做到這一點,但我不確定這是否是一種好的做法,因爲每次我需要加載文件時,我必須寫入'File.dirname(__ FILE__)+「/templates/xxxx.xxx」 。似乎有點冗長。 –
這就是封裝的用途;-)編寫一個返回正確路徑的函數。我爲此編輯解決方案。 – ckruse
你有什麼建議在何處或如何放置這種方法?我認爲這種方法將用於生產代碼和測試代碼。 –