私はいくつかの奇妙な動作をデバッグ/診断しようとしており、誰かが私に洞察を与えてくれることを願っています. これは Ruby 1.9.3 にあります。
アップロードされたファイルを開いてその MIME タイプを特定するコードがいくつかあります。
open(file) { |f| get_mime_type(f) }
かなり簡単です。この場合、ファイルは実際にはパスではなくファイル オブジェクト (または、テスト スイートでは Rack::Test::UploadedFile)open
ですが、ファイル オブジェクトで問題なく動作するようです。
... ただし、チームに新しいメンバーが加わり、彼のために機能していません。彼の環境はほとんど同じように設定されています (Ruby のバージョンとパッチレベル、Rails のバージョン、インストールされている gem など、私が考えることができる関連するものはすべて同じです) が、彼のマシンでは、ファイル オブジェクトが に渡されるとopen
、 file オブジェクトを削除し、ブロックを完全に無視します。ただし、ファイル オブジェクトの代わりにパスを渡すと機能します。
open(file.path) { |f| get_mime_type(f) }
これは私たちの一時的な修正ですが、私が理解しようとしているのは、なぜこれが起こっているのかということです? 洞察をいただければ幸いです。