request.xhr?имеет значение true, когда сервер запускается из VSCode и ITerm, но не при запуске в терминале или Beanstalk? - PullRequest
0 голосов
/ 08 июля 2019

ПРОБЛЕМА

Я храню местоположения Пользователя, чтобы перенаправлять их после регистрации / входа. Я сохраняю местоположения только в случае request.xhr?ЛОЖЬ.

Однако request.xhr?запускает FALSE при запуске сервера rails с некоторых терминалов и TRUE при запуске сервера rails с некоторых других терминалов.

Это происходит при одинаковых запросах одного и того же кода на одной машине.Почему это происходит?

Я ПОПРОБОВАЛ

Я пытался протестировать одни и те же запросы на одной и той же машине, одни и те же запросы на разных машинах и сравнилнесколько разных запросов.

Неоднократно кажется, что:

Когда сервер rails запускается из терминала или AWS Elastic Beanstalk, request.xhr? == false, что я и ожидаю.

Когдасервер rails запускается из iTerm или VSCode, request.xhr? == true, что не соответствует ожиданиям.

RELEVANT CODE

Я проверяю XHR и сохраняю местоположения запросовв app / controllers / application_controller.rb:


class ApplicationController < ActionController::Base

  ...
  before_action :store_user_location!, if: :storable_location?
  ...

  private

  def storable_location?
    puts request.fullpath
    puts "CHECKING XHR"
    puts request.xhr? # this is the line that gives differing outputs
    request.get? && is_navigational_format? && !devise_controller? && !request.xhr? && !is_a?(::CertificationsController)&& !is_a?(::MainController)
  end

  def store_user_location!
      # :user is the scope we are authenticating
      store_location_for(:user, request.fullpath)
  end

ОЖИДАЕМЫЙ ВЫХОД

Ожидаемый: false Фактический: true

Но только на iTerm или VSCode

(или, по крайней мере, я ожидаю, что выходы не будут отличаться в зависимости от используемого терминала).

...