Use sidekiq, it's basically a job queue and persists jobs into a Redis DB, also has a nice web interface, retries etc. etc.
For running scheduled jobs take a look at https://github.com/mperham/sidekiq/wiki/Scheduled-Jobs
YourAfterJobWorker.perform_in 10.minutes, user.id
The implementation of your worker would look like
# app/workers/your_after_job_worker.rb
class YourAfterJobWorker
include Sidekiq::Worker
def perform(user_id)
user = User.find(user_id)
TheAfterJobMailer.some_email(user).deliver if user.matches_your_condition?
end
end