内部に次のようなコードを含む宝石があります。
def read(file)
@file = File.new file, "r"
end
問題は、次のようなディレクトリ構造があるとします。
app/main.rb
app/templates/example.txt
main.rb
次のコードがあります。
require 'mygem'
example = MyGem.read('templates/example.txt')
それは思いつきFile Not Found: templates/example.txt
ます。example.txt
同じディレクトリにある場合は機能しますが、ディレクトリにある場合は機能しmain.rb
ません。この問題を解決するために、relative_to
inというオプションの引数を追加しましたread()
。これは絶対パスを取るため、上記は次のようにする必要があります。
require 'mygem'
example = MyGem.read('templates/example.txt', File.dirname(__FILE__))
それはうまくいきますが、少し醜いと思います。クラスread()
が呼び出されているファイルを認識し、それに基づいてパスを計算するようにする方法はありますか?