1

Heroku (bamboo-mri-1.9.2) にデプロイされた Rails 3.0.10 アプリケーションに Paypal IPN 通知を統合しようとしています。Rails アプリケーションに IPN を統合するのはこれが初めてではありませんが、気が狂うような問題が発生しており、現時点では何もわかりません。

config/routes.rb で IPN 用の特別なルートを定義しました。

match "/paypal_ipn" => "registrations#paypal_ipn", :as => :paypal_ipn

そして、RegistrationController に対応するアクションがあります。

class RegistrationsController < ApplicationController
  include ActiveMerchant::Billing::Integrations
  ...
  def paypal_ipn
    // Notification management stuff...
  end
end

問題は、サーバーが常に 503 エラーで IPN シミュレーターに応答するため、アプリケーションが Heroku にデプロイされると、この URL に IPN 通知を送信できないことです。興味深いのは、CURL または任意のブラウザーを使用して、POST または GET 要求をこの URL に正常に送信できることです。

paypal_ipnメソッドの内容をraise "It exploded!"例外なくログに記録し、前のフィルタをすべてスキップして同じ結果を得ました。

herokuログで確認できるのはこれだけですが、あまり役に立ちません...

2012-05-20T17:32:47+00:00 heroku[router]: Error H13 (Connection closed without response) -
> POST reddeportiva-sta.heroku.com/paypal_ipn dyno=web.1 queue= wait= service= status=503 
bytes=2012-05-20T17:32:47+00:00 app[web.1]: !! Unexpected error while processing request: 
undefined method `include?' for nil:NilClass
2012-05-20T17:32:47+00:00 heroku[nginx]: 173.0.82.126 - - [20/May/2012:17:32:47 +0000] 
"POST /paypal_ipn HTTP/1.0" 503 607 "-" "-" reddeportiva-sta.heroku.com

Paypal IPN 通知メッセージに、この悪夢を引き起こしている可能性のある単純な CURL POST 要求とは異なる特定の何かがあるかどうか、誰でも知っていますか?

編集 さて、問題の原因を発見しましたが、まだ解決策を調査中です。

Rack-iframe ( http://rubygems.org/gems/rack-iframe ) を使用して、ユーザーがログインし、Web ページの iframe 内でセッションを維持できるようにしています。

Rack-iframe をクラッシュさせる原因が Paypal IPN メッセージにあるようです。私はそれをさらに調査し、私の発見を共有します.

それは本当に奇妙なバグでした...


編集 2 この問題を少し修正したプル リクエストを Rack-iframe 作成者に送信したので、この問題は解決したと思います :-) https://github.com/merchii/rack-iframe/pull/1

4

1 に答える 1

1

「未定義のメソッド「include?」for nil:NilClass" が気になる場合は、ログ レベルを DEBUG に上げて、他に何が起こっているかを確認します。

https://devcenter.heroku.com/articles/logging#logging_in_rails

于 2012-05-20T18:16:11.303 に答える