2016-09-20 2 views
1

Ruby on Railsアプリケーションをサードパーティのアプリケーションと統合する必要があります。これは、共通のPostgreSQLデータベースを共有します。つまり、Railsアプリとサードパーティのアプリは同じPGデータベースを使用します。サードパーティのアプリケーションによってトリガされたデータベースの変更をリッスンする方法

Railsアプリ内でリスナーを設定することは可能ですか?サードパーティのアプリケーションがデータベースレコードを追加、編集、または削除するときにイベントが発生するように設定することはできますか?

たとえば、BookモデルがRailsで定義されていて、サードパーティのアプリがBooksControllerではなく、データベースのブックテーブルに新しい行を追加しているとします。

Railsアプリケーションは、新しいレコードが追加されたこと、または既存のレコードが編集/削除されたことを検出できますか?

答えて

1

私はRubyやPostgreSQLには慣れていませんが、このケースではarquitechtureはまったく同じです。

私はあなたが変更のためにbbddを聞くためにトリガーを使用する必要があると思う: https://www.postgresql.org/docs/9.2/static/plpgsql-trigger.html

次に、あなたはそれが更新されているのRailsアプリを教えているPostgreSQLのスクリプトからWebサービスを呼び出すことができます。

Postgresql - detect changes and call webservice

1

これは私が最後にしたものです:Wheneverを使用してください。これはCapistranoとうまく統合され、cron内からRailsコードを実行する方法を示しています。私の不足している平和は基本的に

スクリプト/ランナー-eプロダクション 'ChangeObserver.recentchanges' であり、これは5分ごとに実行されます。 recentchangesは、tmpファイルから最後のlook-at IDを読み取り、それより高いIDを持つすべての新しいChangeレコードを取得し、各レコードの通常のオブザーバーコードを実行します(最も高い参照IDをtmp-fileに保存します) 、 もちろん)。

関連する問題