LoginSignup
3
5

More than 5 years have passed since last update.

RailsでGeocoderを結果をキャッシュしながら使う

Posted at

目的

  • 緯度経度情報を扱う必要があり、簡易に住所を緯度経度変換したい
  • 緯度経度を元に地図検索を実装していくが、中心地点の定義は郵便番号や地名等でピンポイントで指定したい
  • 緯度経度の検索結果はキャッシュしたいけど、有効期限も設定しておきたい
    • google のAPI利用上限に引っかかるかもしれないのでキャッシュしたい

やったこと

Gemfile

gem 'geocoder'

config/initializers/geocoder.rb

  • いつもは大体redis に突っ込んじゃうんだけど、redis が使えなかった
  • なので、ファイルキャッシュを使用し、有効期限の設定をすることにした
Geocoder.configure(
  language: :ja, 
  cache:        ActiveSupport::Cache::FileStore.new([Rails.root, 'tmp', 'geocoder'].join('/'), { expires_in: 30.days }), 
  cache_prefix: 'geocoder:',
)

基本的な使い方

  • Geocode.search('東京都') などを記載すると自動的に結果がキャッシュされます
  • 2回目以降、キャッシュ有効期限内であればそちらから取ってくるのでプログラム側で特にキャッシュを意識する必要はないです

補足

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5