Как получить доступ к данным рельсов в гем?
Я использую Faye и частный паб в качестве push-сервера. Мне нужно обновить статус пользователя онлайн, когда он подписывается на канал.
Я разветвлял гем private_pub и изменил некоторый код, мое приложение отправляет user_id, но я не знаю, как найти пользователя и обновить его статус, потому что в нем происходит событие подписки.
module PrivatePub
# This class is an extension for the Faye::RackAdapter.
# It is used inside of PrivatePub.faye_app.
class FayeExtension
def incoming(message, callback)
p "user_id = #{message['ext']['user_id']}"
if message["channel"] == "/meta/subscribe"
authenticate_subscribe(message)
# user = User.find(message['ext']['user_id'])
# user.status = 'online'
# user.save
elsif message["channel"] !~ %r{^/meta/}
authenticate_publish(message)
end
callback.call(message)
end
end
end
Я могу получить user_id, но не могу использовать модель пользователя в геме. Какой лучший способ сделать это?
1 ответ
Решение
Попробуйте добавить окружение в private_pub.rb. Например
require File.expand_path("../config/environment", __FILE__)