バックエンドとバッチで同じロジックを使いまわす
同じお題の開発していそうだなー?
ライブラリ作ってみるか!
✨
✨
ライブラリってどう作り始めるの?
1. アンダースコア(_) クラスやモジュールに複数の単語がある場合
2. ダッシュ(-) 他のgemに機能を追加する場合
①
②
②
① + ②
①
②
②
① + ②
命名規則①を採用しています
スター🎖が多くついていて、
利用目的が近そうなライブラリが良いかもしれないです
全体仕様検討参考 >>
Geohashロジック参考 >>
・ロジックやテストが変更された時に自動で実行して開発
・先に最終結果だけのテストを書いて、実行しながら開発ができる
(TDD的な開発スタイル)
// Guardfile
guard :rspec, cmd: 'bundle exec rspec' do
watch(%r{^spec/.+_spec\.rb$})
watch(%r{^lib/sora_geocoding/(.+)\.rb$}) { |m| "spec/unit/#{m[1]}_spec.rb" }
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/unit/#{m[1]}_spec.rb" }
watch('spec/spec_helper.rb') { 'spec' }
end
SoraGeocoding
.search
when 200 status on Geocoding API
is returned "geocoding" site.
is returned latitude and longitude and google_maps tags.
when 200 status on Yahoo Geocoder API
is returned "yahoo" site.
is returned Status and Coordinates tags.
.coodinates
when 200 status on Geocoding API
is returned "geocoding" site.
is returned latitude and longitude.
when 200 status on Yahoo Geocoder API
is returned "yahoo" site.
is returned latitude and longitude.
.geohash
when latitude 33.333333333 and longitude 133.3333333
is returned "wvyvdh4kezeh".
Finished in 1.11 seconds (files took 0.98608 seconds to load)
9 examples, 0 failures
Coverage report generated for RSpec to /Users/hironori/work/sora_geocoding_hirontan/coverage. 75 / 78 LOC (96.15%) covered.
・都市名や食べ物などダミーデータを用意してくれているライブラリ
・ダミーデータをCSV生成やデータベース格納したい場合に活用できるかも
// 都市名をクエリとして扱ってます
let!(:query) { Faker::Address.city }
・あまり想定していなかった空白文字のエラーを発見できました。
(San Franciscoなど)
・コードカバレッジを計測してくれる
Finished in 0.93592 seconds (files took 0.5433 seconds to load)
38 examples, 0 failures
Coverage report generated for RSpec to /Users/hironori/work/sora_geocoding_hirontan/coverage. 266 / 266 LOC (100.0%) covered.