Pregunta

Estoy trabajando en una aplicación Rails que utiliza la API de Shopify a través de la gema Shopify_App. Para acortar una larga historia para hacer llamadas a la API de Shopify, el siguiente código debe aparecer en el controlador de la clase de llamadas.

 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

Ahora, dado que tengo múltiples controladores en mi aplicación, no parece apropiado colocar el código anterior en cada uno. Traté de eliminar el código de cada controlador y colocarlo únicamente en el controlador de aplicación, pero eso no funcionó. Cualquier orientación de por qué podría estar experimentando estos problemas sería muy apreciado. Como beneficio adicional, si pudiera decirme cómo hacer que mis pruebas de controlador funcionen en RSPEC sin comentar el código anterior en los controladores, estaría especialmente agradecido.

Gracias por tu tiempo

¿Fue útil?

Solución

Tiene sentido que defina el filtro alrededor de cada controlador, ya que está definiendo a qué métodos de ese controlador aplicar el filtro. El controlador de la aplicación no sabe nada de las clases debajo, por lo que poner la definición allí no tiene sentido.

Recomiendo configurar Muleta falsa O algo similar para fingir cualquier llamada externa realizada por la API utilizando pruebas. Para evitar que el método de Shopify_Session lo redirle a la pantalla de inicio de sesión, asegúrese de establecer la sesión [: Shopify] a una instancia de Shopifyapi :: sesión en la configuración de su prueba.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top