使用Shopify API构建Rails应用程序。在哪里放置会话过滤器?

时间:2011-09-10 22:11:22

标签: ruby-on-rails session controller shopify

我正在开发一个通过Shopify_app Gem使用Shopify API的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中运行我的控制器测试而不在控制器中注释掉上述代码,我将特别感激。

感谢您的时间

1 个答案:

答案 0 :(得分:1)

当您定义该控制器应用过滤器的哪些方法时,在每个控制器中定义周围过滤器是有意义的。应用程序控制器对它下面的类一无所知,因此将定义放在那里毫无意义。

我建议设置FakeWeb或类似的东西来伪造API使用测试进行的任何外部调用。要避免shopify_session方法将您重定向到登录屏幕,请确保在您的测试设置中将session [:shopify]设置为ShopifyAPI::Session的实例。