Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用Shopify API构建Rails3应用程序。将会话筛选器放置在何处?_Ruby On Rails_Session_Controller_Shopify - Fatal编程技术网

Ruby on rails 使用Shopify API构建Rails3应用程序。将会话筛选器放置在何处?

Ruby on rails 使用Shopify API构建Rails3应用程序。将会话筛选器放置在何处?,ruby-on-rails,session,controller,shopify,Ruby On Rails,Session,Controller,Shopify,我正在开发一个Rails应用程序,它通过Shopify_应用程序Gem使用Shopify API。长话短说,为了调用Shopify API,以下代码必须出现在调用类的控制器中 around_filter :shopify_session, :except => 'welcome' def welcome current_host = "#{request.host}#{':' + request.port.to_s if request.port != 80}" @

我正在开发一个Rails应用程序,它通过Shopify_应用程序Gem使用Shopify API。长话短说,为了调用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中工作,而不评论控制器中的上述代码,我将特别感激


感谢您的时间

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


我建议设置或类似于使用测试来伪造API发出的任何外部调用。要避免shopify_会话方法将您重定向到登录屏幕,请确保在测试设置中将会话[:shopify]设置为的实例。

在定义该控制器的哪些方法应用筛选器时,在每个控制器中定义环绕筛选器是有意义的。应用程序控制器对它下面的类一无所知,因此将定义放在那里是没有意义的


我建议设置或类似于使用测试来伪造API发出的任何外部调用。要避免shopify_会话方法将您重定向到登录屏幕,请确保在测试设置中将会话[:shopify]设置为的实例。

感谢您的直接来源的洞察力。感谢您的直接来源的洞察力。