ryanb / private_pub

Handle pub/sub messaging through private channels in Rails using Faye.
MIT License
864 stars 228 forks source link

publishing from monitor #55

Open nir0 opened 12 years ago

nir0 commented 12 years ago

i need to be able publishing from inside monitor

private_pub.ru

server.bind :subscribe do |client_id, channel|
  if /\/chat\/\d+\/user\//.match(channel)
    m = /\/chat\/(?<chat_id>\d+)\/user\/(?<user_id>\d+)/.match(channel)
    user_id = m[:user_id]
    chat_id = m[:chat_id]
  end
  unless redis.smembers('users_of_'+chat_id.to_s).include?(user_id)
    redis.sadd('users_of_'+chat_id.to_s, user_id)
    server.get_client.publish '/chat/1', 'test'
  end
  logger.info('SUBSCRIBE: '+client_id+' ('+user_id.to_s+'), '+channel)
end

server.get_client.publish '/chat/1', 'test' causes an error:

2012-04-27 14:08:17 [ERROR] [Faye::RackAdapter] undefined method `[]' for nil:NilClass
Backtrace:
/home/nir0/.rvm/gems/ruby-1.9.3-p125@tyu_development/gems/private_pub-1.0.1/lib/private_pub/faye_extension.rb:32:in `authenticate_publish'
/home/nir0/.rvm/gems/ruby-1.9.3-p125@tyu_development/gems/private_pub-1.0.1/lib/private_pub/faye_extension.rb:11:in `incoming'
/home/nir0/.rvm/gems/ruby-1.9.3-p125@tyu_development/gems/faye-0.8.2/lib/faye/protocol/extensible.rb:33:in `block in pipe_through_extensions'
/home/nir0/.rvm/gems/ruby-1.9.3-p125@tyu_development/gems/faye-0.8.2/lib/faye/protocol/extensible.rb:38:in `call'
/home/nir0/.rvm/gems/ruby-1.9.3-p125@tyu_development/gems/faye-0.8.2/lib/faye/protocol/extensible.rb:38:in `pipe_through_extensions'
/home/nir0/.rvm/gems/ruby-1.9.3-p125@tyu_development/gems/faye-0.8.2/lib/faye/protocol/server.rb:62:in `block in process'

do i need to pass some sort of auth key here?