内部に次のようなコードを含む宝石があります。
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_toinというオプションの引数を追加しましたread()。これは絶対パスを取るため、上記は次のようにする必要があります。
require 'mygem'
example = MyGem.read('templates/example.txt', File.dirname(__FILE__))
それはうまくいきますが、少し醜いと思います。クラスread()が呼び出されているファイルを認識し、それに基づいてパスを計算するようにする方法はありますか?