1

Shopify_appGemを介してShopifyAPIを使用するRailsアプリに取り組んでいます。Shopify APIを呼び出すために長い話を短くするには、呼び出し元のクラスのコントローラーに次のコードを表示する必要があります。

 around_filter :shopify_session, :except => 'welcome'

  def welcome
    current_host = "#{request.host}#{':' + request.port.to_s if request.port != 80}"
    @callback_url = "http://#{current_host}/login/finalize"
  end

現在、アプリに複数のコントローラーがあるため、それぞれに上記のコードを配置することはほとんど適切ではないようです。各コントローラーからコードを削除して、アプリケーションコントローラーにのみ配置しようとしましたが、うまくいきませんでした。私がこれらの問題を経験している理由についてのガイダンスをいただければ幸いです。ボーナスとして、コントローラーで上記のコードをコメントアウトせずにRSpecでコントローラーテストを機能させる方法を教えていただければ、特にありがたいです。

御時間ありがとうございます

4

1 に答える 1

1

フィルタを適用するコントローラのメソッドを定義するときに、各コントローラでアラウンドフィルタを定義することは理にかなっています。アプリケーションコントローラはその下のクラスについて何も知らないので、そこに定義を置くことは意味がありません。

テストを使用してAPIによって行われた外部呼び出しを偽造するために、 FakeWebまたは同様のものを設定することをお勧めします。shopify_sessionメソッドがログイン画面にリダイレクトされないようにするには、テストセットアップでsession [:shopify]をShopifyAPI::Sessionのインスタンスに設定してください。

于 2011-09-11T12:12:17.753 に答える