Rails 내에서 이벤트 머신을 사용하는 Google C2DM Ruby 라이브러리 인 GroupMe gem EM-C2DM, https://github.com/groupme/em-c2dm을 사용하려고합니다. Heroku에 특정한 설정이 있기 때문에 그것이 Heroku에서 작동해야한다는 것을 알고 있습니다. 그러나 나는 그것을 실행할 수없는 것 같습니다.EventMachine on Roku & EM-C2DM Gem
Resque Worker를 통해 실행 중이며 작업자가 올바르게 작동하고 대기열에 들어가서 호출됩니다. 그러나 과거 인증을 얻지 못하고 푸시 알림의 응답을보고하지 않습니다. 그것은 결코 끝나지 않는 것처럼 보입니다.
module PushAndroid
require "eventmachine"
require "em-c2dm"
@queue = :android_push
def self.perform(opts)
puts "entering android push"
EM.next_tick do
EM::C2DM.authenticate(ENV["C2DM_EMAIL"], ENV["C2DM_PASSWORD"])
@push = Push.find(opts['push_id'])
message = "Message #{@push.title}"
push_id = "#{@push.id}"
opts['tokens'].each{ |token|
EM::C2DM.push(token, :message => message, :push_id => push_id) do |response|
if response.success?
puts "success! id=#{response.id}" # ID of sent message
else
puts "response:"
puts response.inspect
#case response.error
#when "InvalidToken"
# reauthenticate
#when "InvalidRegistration"
# clear our registration id
#when "RetryAfter"
# pause sending for response.retry_after seconds
#end
end
end
}
end
end
end
가 나는 또한 next_tick 또는 EM.next_tick :: EM을 사용하지 않고 그것을 시도하고 그것이 과거의 인증을 취득, 응답 또는 아무것도 반환하지, 아무것도 밀어하지 그러나 않았다. 사실 EM :: next_tick에 들어 가지 않습니다.
이 방법을 사용하는 방법에 대한 아이디어가 있으십니까? 이것은 내 Gemfile.lock에서 얇은
와 레일 3.1.1을 사용하여, Heroku가에하십시오 EM.run에 넣기
thin (1.3.1)
daemons (>= 1.0.9)
eventmachine (>= 0.12.6)
rack (>= 1.0.0)
eventmachine (1.0.0.beta.4)
em-apn (0.0.3)
eventmachine (>= 1.0.0.beta.3)
yajl-ruby (>= 0.8.2)
em-http-request (1.0.2)
addressable (>= 2.2.3)
cookiejar
em-socksify
eventmachine (>= 1.0.0.beta.4)
http_parser.rb (>= 0.5.3)
em-socksify (0.2.0)
eventmachine (>= 1.0.0.beta.4)
remote: git://github.com/groupme/em-c2dm.git
revision: 2d853ff771908785f23b8c64fa5d5508b4eba40a
specs:
em-c2dm (0.0.1)
em-http-request (>= 1.0.0.beta.4)
eventmachine (>= 1.0.0.beta.3)
uuid