Don't Do This
First, it's generally not a good idea for two independent apps to share a database. Different threads/processes of a single app? Sure. But independent applications should communicate through structured processes instead of having their data changed underneath them.
... but if you have to
If you decide to go this route anyways, App1 could know about updates made by App2 through a number of mechanisms. You could write changes to a changes/notifications table App1 could poll. You could use custom triggers or stored procedures depending on the RDBMS. App2 could directly write to any job queue App1 is using (sidekiq's redis instance, delayed job table, etc). App2 could hit an API endpoint on App1. Updates could be pushed using a message queue (redis/rabbitmq/kafka). There isn't really a best practice here since you've already abandoned them to go this route.
Distributed App Approach
If what you really mean (or decide to implement) is App1 and App2 should have separate databases, but share data, then there are best practices available. You'll want some sort of flexible/scalable message broker in-between (kafka/rabbitmq/redis) and likely share data using a strongly typed schema amenable to future changes. Kafka has built in tools for this but tools like google's ProtoBufs also exist.
This means moving to a truly distributed architecture, which means a number of additional concerns and complexities. You will have to consider which system is the source of truth for any shared data. You'll need to have mechanisms to keep the systems in sync, detect when they are out of sync, and recover from issues. These last steps are often overlooked when architecting distributed systems and can grind organizations to a halt if they aren't considered from the beginning.
With this approach, updates would be published to the bus and App1 could listen for Post updates, record them locally, and trigger callbacks.
Probably the Right Way: Monolith
Yet another approach is App1 and App2 are really just different faces of the same rails app. Unless they absolutely positively need to be separate apps for some concrete reason: they should not be. Whatever your reasons for doing so should be met with extreme skepticism.
Rails is an extremely flexible framework and tools like rails engines already exist with widely used examples to draw from. Your rails app can be many apps and doing so eliminates vast amounts of complexity.
There are legitimate reasons you might need more apps, but if they need to share data to such a degree that a shared database is being considered, then you may be forcing a boundary between problems that can be solved in a single code base.