Railsのプロジェクト外の同一サーバー上のファイルの更新を検出してrakeタスクを走らせる
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
を使っています。