2013-06-03 37 views
2

我正嘗試使用apn_sender gem發送Apple推送通知。我遵循github頁面上的說明以及hereapn_sender無法爲Apple推送通知啓動resque worker

我Redis的工人啓動成功,我(似乎)能夠成功地啓動resque工人(並驗證其是否與list命令運行)被跟隨this用這個命令:

resque:work QUEUE='*' 

然而,當我嘗試用

script/apn_sender --environment=production --verbose start 

啓動app_sender我得到以下錯誤:

I, [2013-06-03T16:14:17.848632 #15074] INFO -- : 2013-06-03 16:14:17 -0400: Running before_first_fork hook 
I, [2013-06-03T16:14:17.848968 #15074] INFO -- : 2013-06-03 16:14:17 -0400: Failed to start worker : #<NoMethodError: undefined method `call' for []:Array> 
F, [2013-06-03T16:14:17.849138 #15074] FATAL -- : wrong number of arguments (1 for 0) (ArgumentError) 
/Users/.../.rvm/gems/ruby-1.9.3-p327/gems/apn_sender-1.0.5/lib/resque/hooks/before_unregister_worker.rb:10:in `unregister_worker' 
/Users/.../.rvm/gems/ruby-1.9.3-p327/gems/resque-1.24.1/lib/resque/worker.rb:176:in `rescue in work' 
/Users/.../.rvm/gems/ruby-1.9.3-p327/gems/resque-1.24.1/lib/resque/worker.rb:130:in `work' 
/Users/.../.rvm/gems/ruby-1.9.3-p327/gems/apn_sender-1.0.5/lib/apn/sender_daemon.rb:70:in `run' 
/Users/.../.rvm/gems/ruby-1.9.3-p327/gems/apn_sender-1.0.5/lib/apn/sender_daemon.rb:58:in `block (2 levels) in daemonize' 
/Users/.../.rvm/gems/ruby-1.9.3-p327/gems/daemons-1.1.9/lib/daemons/application.rb:255:in `call' 
/Users/.../.rvm/gems/ruby-1.9.3-p327/gems/daemons-1.1.9/lib/daemons/application.rb:255:in `block in start_proc' 
/Users/.../.rvm/gems/ruby-1.9.3-p327/gems/daemons-1.1.9/lib/daemons/daemonize.rb:82:in `call' 
/Users/.../.rvm/gems/ruby-1.9.3-p327/gems/daemons-1.1.9/lib/daemons/daemonize.rb:82:in `call_as_daemon' 
/Users/.../.rvm/gems/ruby-1.9.3-p327/gems/daemons-1.1.9/lib/daemons/application.rb:259:in `start_proc' 
/Users/.../.rvm/gems/ruby-1.9.3-p327/gems/daemons-1.1.9/lib/daemons/application.rb:296:in `start' 
/Users/.../.rvm/gems/ruby-1.9.3-p327/gems/daemons-1.1.9/lib/daemons/controller.rb:70:in `run' 
/Users/.../.rvm/gems/ruby-1.9.3-p327/gems/daemons-1.1.9/lib/daemons.rb:197:in `block in run_proc' 
/Users/.../.rvm/gems/ruby-1.9.3-p327/gems/daemons-1.1.9/lib/daemons/cmdline.rb:109:in `call' 
/Users/.../.rvm/gems/ruby-1.9.3-p327/gems/daemons-1.1.9/lib/daemons/cmdline.rb:109:in `catch_exceptions' 
/Users/.../.rvm/gems/ruby-1.9.3-p327/gems/daemons-1.1.9/lib/daemons.rb:196:in `run_proc' 
/Users/.../.rvm/gems/ruby-1.9.3-p327/gems/apn_sender-1.0.5/lib/apn/sender_daemon.rb:57:in `block in daemonize' 
/Users/.../.rvm/gems/ruby-1.9.3-p327/gems/apn_sender-1.0.5/lib/apn/sender_daemon.rb:55:in `times' 
/Users/.../.rvm/gems/ruby-1.9.3-p327/gems/apn_sender-1.0.5/lib/apn/sender_daemon.rb:55:in `daemonize' 
script/apn_sender:10:in `<main>' 

而且,我的腳本/ apn_sender的樣子:

#!/usr/bin/env ruby 

# Daemons sets pwd to /, so we have to explicitly set RAILS_ROOT 
RAILS_ROOT =File.expand_path(File.join(File.dirname(__FILE__),'..')) 

require 'rubygems' 
require 'apn' 
require 'apn/sender_daemon' 

APN::SenderDaemon.new(ARGV).daemonize 

任何幫助,將不勝感激!

回答

1

我很確定這裏的問題是resque的版本。我會仔細檢查,但據我測試apn_sender與resque 1.19.0工作,沒有什麼。這裏的原因是一些猴子補丁在resque寶石。在仔細檢查resque的正確版本之後,我會將更新推送到gemspec文件,所以沒有人會再得到這個。 也在版本2.0(主)我們不是猴子補丁resque了,甚至不會被強制的依賴。

爲你做了一個簡短的修復,強制resque版本使用1.19.0。