Задержка драгоценного камня геокодера, приводящая к сбою страницы

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

Итак, что я должен сделать, чтобы убедиться, что местоположение «Париж, Франция» является IP-адресом или адресом, который не работает для Geocoder?

def find_current_location_from_ip(ip)
    unless Geocoder.search(ip).nil? || Geocoder.search(ip)[0].nil?
      @location = Geocoder.search(ip)[0].country_code == "RD" ? 
          Geocoder.search("Paris, France")[0] : Geocoder.search(ip)[0]
    else
      @location = Geocoder.search("Paris, France")[0]
    end
    @location
end

def find_current_location_from_address(address)
    Geocoder.search(address).blank? ? 
        Geocoder.search("Paris, France")[0] : Geocoder.search(address)[0]
end

Любые советы были бы фантастическими. Также похоже, что если я обновляю страницу, местоположение внезапно становится правильным, а код страны на нулевом объекте исчезает ... ??

Я немного смущен тем, что могу обратиться к последнему только сейчас.

Ваше здоровье,

Джоэл


person zabumba    schedule 05.12.2011    source источник


Ответы (1)


Иногда Geocoder может возвращать ошибку, не вызывая исключения. Это происходит, когда используемый вами API (google, yahoo и т. д.) возвращает ошибку API. API по умолчанию — Google. У них есть дневной лимит запросов 2500, который, если вы не используете ключ API, на который вы подписались, использует IP-адрес сервера, чтобы определить, был ли превышен лимит. Это наиболее вероятная причина вашей проблемы.

Вам нужно убедиться, что в переменной @location действительно есть данные, прежде чем обращаться к ней.

Я считаю, что вы можете проверить так:

puts @location[:country_code] unless @location.empty?

person jakeonrails    schedule 21.02.2012