2

apn_sender gem を使用して Apple プッシュ通知を送信しようとしています。github ページとhereの指示に従いました。

私の redis ワーカーは正常に起動し、次のコマンドを実行すると、(一見) resque ワーカーを正常に起動できます (そして list コマンドでその実行を確認できます)

resque:work QUEUE='*'

ただし、 app_sender を起動しようとすると

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

次のエラーが表示されます。

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>'

そして、私の script/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

どんな助けでも大歓迎です!

4

1 に答える 1

1

ここでの問題はresqueのバージョンであると確信しています。再確認しますが、テストした限り、apn_sender は resque 1.19.0 で動作し、それ以上は動作しません。ここでの理由は、resque gem のモンキー パッチです。resque の正しいバージョンを再確認した後、gemspec ファイルに更新をプッシュして、誰もこれを取得しないようにします。また、バージョン 2.0 (マスター) では、もはや resque にモンキー パッチを適用することはなく、強制的な依存関係にもなりません。

あなたのための短い修正、強制的にresqueバージョンが1.19.0を使用するようにします。

于 2013-06-04T13:36:04.967 に答える