【问题标题】:Exception: ActiveRecord::ConnectionNotEstablished on using pubnub例外:使用 pubnub 时的 ActiveRecord::ConnectionNotEstablished
【发布时间】:2015-10-25 09:00:19
【问题描述】:

我在我的项目中使用 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。但是,有时此代码执行时不会出现问题。

我尝试增加数据库超时和池,但同样的问题仍然存在。 知道我哪里做错了吗?

【问题讨论】:

    标签: ruby ruby-on-rails-4 activerecord mysql2 pubnub


    【解决方案1】:

    在触发$pubnub.subscribe 之前尝试添加ActiveRecord::Base.establish_connection。它应该会有所帮助。

    【讨论】:

    • 有了这个,我的代码在开发中运行良好,但在生产模式的服务器上,它在每种情况下都会抛出相同的错误。
    猜你喜欢
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    相关资源
    最近更新 更多