2016-09-20 2 views
1

Ruby on Rails 응용 프로그램을 일반적인 PostgreSQL 데이터베이스를 공유하는 타사 응용 프로그램과 통합해야합니다. 즉, Rails 앱과 타사 앱 모두 동일한 PG 데이터베이스를 사용하게됩니다.타사 응용 프로그램에서 트리거 한 데이터베이스 변경 내용을 수신하는 방법

타사 앱이 데이터베이스 레코드를 추가, 편집 또는 삭제할 때 이벤트가 시작되도록 Rails 앱에서 리스너를 설정할 수 있습니까?

예를 들어, 레일에 Book 모델이 정의되어 있고 타사 앱이 BooksController이 아닌 데이터베이스의 북 테이블에 새 행을 추가한다고 가정 해보십시오.

Rails 응용 프로그램은 새 레코드가 추가되었거나 기존 레코드가 편집/삭제되었음을 감지 할 수 있습니까?

답변

1

이것이 내가 마침내 한 것입니다 : Whenever을 사용하십시오. 왜냐하면 Capistrano와 잘 통합되어 cron에서 레일즈 코드를 실행하는 방법을 보여 주었기 때문입니다. 실종 된 평화는 기본적으로 5 분마다 실행되는

스크립트/runner -e production 'ChangeObserver.recentchanges' 입니다. recentchanges는 tmp 파일에서 마지막 룩업 ID를 읽고, 그보다 더 높은 ID를 가진 모든 새 Change 레코드를 가져오고 각 레코드에 대한 일반 옵저버 코드를 실행하고 가장 높은 룩업 ID를 tmp 파일에 저장합니다 , 당연하지).

관련 문제