1

私はこのコードのRinkモデルを持っています:

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'
}, .... ])

ローカルマシンでrakedb:seedを実行すると、すべてのRinkオブジェクトが作成され、適切にジオコーディングされます。しかし、Herokuにプッシュして同じコマンド(heroku run rake db:seed)を実行すると、Rinkオブジェクトの一部の一見ランダムなサブセットが適切にジオコーディングされておらず、緯度と経度の値がnullになっています。Herokuでdb:seedコマンドを複数回実行すると、適切にジオコーディングされていないRinkオブジェクトのセットが変更されます。何かご意見は?

4

1 に答える 1

2

次のように、1 時間ごとの cron (または毎日の cron) をアプリに配置します。

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

おそらく、アプリが他の Heroku アプリケーションと同じ IP アドレスを使用して Geocoder API リクエストを作成しており、デフォルトの API (google) が IP アドレスに基づいて 1 日あたり 2500 リクエストにレート制限されている可能性があります。

API キーにサインアップすると、リクエスト (2500/日以内) を行うことができ、他のアプリと共有されずに独自の制限を持つことができます。

于 2012-02-21T02:09:03.447 に答える