Railsで rake foo というタスクがあり、同一サーバー上に定期的にファイルを更新してる /var/foo/data.ymlがある状態なのですが、この data.ymlが更新された時に rake fooを走らせたく思っています。

方法としては

  • data.ymlを生成するスクリプトの最後のrake fooを外部から呼び出す方法
  • Railsでdata.ymlのファイルスタンプを常に見ておいて更新されたらrake fooを呼び出す方法

の2通りが思いついたのですが、外部からRails内部を触りに行くよりは、Railsが外部ファイルを触りに行くほうが自然な気がするのでRailsで特定のファイルの更新を監視する方法があれば知りたいです。

data.yml取得のスクリプト部分をRailsプロジェクト内に入れることも考えたのですが、下手に入れると複雑に絡み込んでしまいそうで全く別の物として使っています。

このような場合どうすればdata.ymlの更新を検知してすぐにRakeタスクを走らせることができますか?

Rakeタスクの管理にはWheneverを使い、外部スクリプトの定期実行には別ユーザーでのcronを使っています。