2011-11-14 3 views
1

에 작동하지 않는이 코드와 스케이트장 모델이 있습니다레일 3.1 지오 코딩이 Heroku가

geocoded_by :full_street_address 
after_validation :geocode 

... 

def full_street_address 
    [address, city, 'Ontario', 'Canada'].compact.join(', ') 
end 

을 그리고 DB/seeds.rb 내가이 형식에 뭔가가 :

Rink.create([ 
{ 
    name: 'Alexander Park', 
    address: '259 Whitney Ave.', 
    city: 'Hamilton', 
    rink_type: 'outdoor', 
    phone: '9055463747' 
}, .... ]) 

I을 내 로컬 컴퓨터에서 rake db : seed를 실행하면 모든 Rink 개체가 만들어지고 올바르게 지오 코딩됩니다. 그러나 Heroku를 밀고 동일한 명령 (heroku rake db : seed 실행)을 실행하면 Rink 객체의 일부 임의의 부분 집합이 올바르게 지오 코딩되지 않고 위도와 경도에 대해 null 값을 갖습니다. Heroku에서 db : seed 명령을 여러 번 실행하면 지오 코딩되지 않은 Rink 객체 세트가 변경됩니다. 이견있는 사람?

I 앱에서 매 시간 크론 (또는 매일 크론)과 같이 둘 것
+0

시드 배열에 사용되는 속성 배열의 크기는 어느 정도입니까? – polarblau

+0

다음 요소가 50 개 미만입니다. –

답변

2

:

Rink.not_geocoded.find_each do |rink| 
    rink.geocode 
end 

무엇 아마 일어나고있는 것은 당신의 앱이 지오 코더를 만들기 위해 다른 Heroku가 애플리케이션과 동일한 IP 주소를 사용하고 있다는 것입니다을 API 요청 및 기본 API (Google)는 IP 주소를 기반으로 하루에 2,500 건의 요청을 처리하는 속도 제한입니다.

API 키를 신청하면 다른 앱과 공유하지 않고 자신의 OWN 한도를 유지해야합니다 (2500/일 이내).

+1

Google 지오 코딩은 IP 주소와 연결되어 있으므로 API 키를 사용하더라도 공유 IP 주소의 요청 제한으로 계속 제한됩니다. – Glenn

관련 문제