Qual é a melhor maneira de definir cabeçalhos de solicitação personalizados ao usar a Capivara nas especificações de solicitação do RSpec?

Estou usando o patch do Mac Capybara :: Session com um método set_headers que atribui ao atributo Capybara :: RackTest :: Browser options (que mudei de um attr_reader para um attr_accessor

Os patches:

class Capybara::RackTest::Browser
  attr_accessor :options
end

class Capybara::Session
  def set_headers(headers)
    if driver.browser.respond_to?(:options=) #because we've monkey patched it above
      options = driver.browser.options
      if options.nil? || options[:headers].nil?
        options ||= {}
        options[:headers] = headers
      else
        options[:headers].merge!(headers)
      end
    else
      raise Capybara::NotSupportedByDriverError
    end
  end
end

Na minha especificação de solicitação, estou fazendo:

page.set_headers("REMOTE_ADDR" => "1.2.3.4")
visit root_path

Isso funciona, mas estou imaginando se existe uma maneira melhor, parece um pouco exagerado poder definir um remote_ip / remote_addr personalizado em uma solicitação. Alguma ideia

questionAnswers(3)

yourAnswerToTheQuestion