passenger_fix.rb 691 Bytes
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
if defined?(PhusionPassenger)

  # When you're using Passenger with smart-lv2 (default) or smart spawn method,
  # Resque doesn't recognize that it has been forked and should re-establish
  # Redis connection. You can see this error message in log:
  #   Redis::InheritedError, Tried to use a connection from a child process 
  #   without reconnecting. You need to reconnect to Redis after forking.
  # 
  # This solution is based on 
  # https://github.com/redis/redis-rb/wiki/redis-rb-on-Phusion-Passenger
  #
  PhusionPassenger.on_event(:starting_worker_process) do |forked|
    # if we're in smart spawning mode, reconnect to Redis
    Resque.redis.client.reconnect if forked
  end
end