をインスタンス化したファイルのディレクトリを取得します私は、この内部のようなコードを持っている宝石を持っているクラスルビー
app/main.rb
app/templates/example.txt
それは
File Not Found: templates/example.txt
を思い付く
require 'mygem'
example = MyGem.read('templates/example.txt')
:
とmain.rb
は、次のコードを持っています。 example.txt
がmain.rb
と同じディレクトリにあったとしても、それがディレクトリにある場合は機能しません。この問題を解決するために、私はread()
にrelative_to
というオプションの引数を追加しました。正常に動作しますが、私はそれは少し醜いだと思う
require 'mygem'
example = MyGem.read('templates/example.txt', File.dirname(__FILE__))
:上記のことが必要となることができるようにこれは絶対パスを取ります。とにかくそれを作るクラスは、ファイルread()
が呼び出されていることを知っているとそれに基づいてパスを知っているようにするには?
main.rbのディレクトリは無関係です。重要なのは 'Dir.pwd'の値です。 –
ああ、それは私が必要なものです。問題は 'rspec'があなたが期待するディレクトリから実行されていないように見えるということでした。 'spec /'の 'templates'ディレクトリを参照することができませんでした。 – andy