webエンジニアの日常

RubyやPython, JSなど、IT関連の記事を書いています

Railsアプリ内でファイルが開かれているか確認する

railsアプリ内で画像ファイルが開かれているか確認する方法です。

私の環境では、railsアプリはcentos6.8で動いているので、その前提で書いていきます。

使うツールはlsofというlinuxコマンドですが、標準では入っていなかったのでインストールします。

sudo yum install lsof

railsアプリからlinuxコマンドを呼ぶ方法ですが、rubyのsystemメソッドが使えます。

ファイルが開かれているか確認したいところで、

system("lsof | grep jpeg")

とします。すると標準出力に開かれているファイルのうちjpegだけが以下のように表示されます。

ruby       4715 vagrant   16u      REG              253,0   688608 444650 /tmp/RackMultipart20170816-4715-now5m5.jpeg
ruby       4715 vagrant   17r      REG               0,18   688608  16994 /vagrant/rails_app/uploads/tmp/1502850925-4715-0001-3823/top.jpeg

確認するときはtail -f log/development.log でログを表示させながら実行してください。

余談ですが、上記と同じようにrubyのsystemコマンドを使えばpythonを実行できたりします。

railsアプリのlibディレクトリにpythonのフォルダを作って、そこにpythonスクリプトを配置しておきます。すると以下のようにして、railsアプリ中からpythonを実行できちゃいます。

system("python ./lib/python/run_calc.py")