2015-08-03 2 views
4

Я использую pubnub в своем проекте и подписывается на канал, а в моем подписчике я обновляю свою БД. Я делаю всю эту работу в файле инициализации, как этотИсключение: ActiveRecord :: ConnectionNotEstablished при использовании pubnub

$callback_location = (lambda do |envelop| 
    begin 
    case envelop.channel 
     when "iwm_driver_locations" 
     last_location = LatLong.where(driver_id: envelop.message['driver_id']).last 
     if last_location.lat != envelop.message['lng'] and last_location.lng != envelop.message['lat'] 
      l = LatLong.create!(
       lat: envelop.message['lat'], 
       lng: envelop.message['lng'], 
       driver_id: envelop.message['driver_id'] 
     ) 
     end 
     when "iwm_chat" 
     m = Message.create!(
      :author => envelop.message, 
      :message => envelop.message, 
      :timetoken => envelop.timetoken 
     ) 
    end 
    rescue Exception => e 
    Rails.logger.info "****** Exception: #{e}" 
    end 
end) 

$pubnub.subscribe(
    :channel => ['iwm_chat', 'iwm_driver_locations'], 
    :callback => $callback_location 
) unless $pubnub.subscription_running? 

но мой абонент бросает исключение ConnectionNotEstablished в некоторых попыток. Однако иногда этот код выполняется без проблем.

Я попытался увеличить тайм-аут и пул БД, но такая же проблема сохраняется. Любая идея, где я делаю неправильно?

ответ

1

попробуйте добавить ActiveRecord::Base.establish_connection перед стрельбой $pubnub.subscribe. Это должно помочь.

+0

С этим мой код работает нормально в разработке, но на сервере в режиме производства его бросает ту же ошибку в каждом случае. –

Смежные вопросы