StravaAPI를 쉽게 다루는 RubyGem을 만들었습니다.

3694 단어 루비

암바 루비




htps : // 기주 b. 코 m / 아이 메라 ld / st ru by

개요



육체파 엔지니어로서 매일의 로드 오토바이에서의 트레이닝에 새롭게 살고 있는 나는 Strava라는 SNS를 사용해 트레이닝(주로 라이드의)을 기록하고 있다. Strava
Strava는 자전거에 장비가 붙어 있으면 주행 거리나 케이던스(1분에 페달을 몇회 했는지)라든지 스피드라든지 출력등을 기록할 수 있다. GPS 대응의 스피드 미터가 붙어 있으면 어디를 달렸을지도 기록된다!
트레이니로서도 엔지니어로서는 매일의 트레이닝을 통해 자신이 어느 정도 성장할 수 있었는지는 매우 신경이 쓰인다!
그래서 Strava에서 데이터를 가져와 자신의 성장을 보는 방법을 생각했습니다!

API 문서를 확인합시다.



htps : //에서 ゔぇぺぺrs. st 등. 코 m/도 cs/레후에렌세/
Strava의 API는 제대로 만들어져 있고 문서도 있다!

Ruby에서는 제공되지 않음



완벽하잖아! 라고 생각했지만 무려 Ruby의 라이브러리가 없다!
진지해! 라고 생각했습니다만 같은 것을 생각하고 있는 엔지니어가 그 밖에도 있던 것 같고 Ruby로 사용할 수 있도록 해 주고 있다!
htps : // 기주 b. 코 m / 쟈레 쵸 ldc ft / st 등
이것을 사용할까 생각했지만 응답이 Hash. 별로 이것으로 나쁜 것은 아니지만 조금 공부를 위해 오브젝트화해 사용하기 쉽게 해 보려고 생각했던 것이었습니다!

Gem으로하자!



스스로 Gem을 만드는 경험은 별로 없어서 모두 신선했다.
평소 minestest 밖에 사용하지 않습니다만. 나중에 알았지만 minestest에서도 OK인 것 같다. (´・ω・`)

TDD



문서를 보면 알 수 있듯이 응답의 JSON이 상당히 몹시.
그래서 객체를 만들기 전에 미리 어떤 인스턴스가 생성되는지를 테스트에 내보내 그 위에 구현해 갔다. 테스트를 쓰고 있다고 설계를 재검토하고 싶다고 생각하는 곳이 나와서 실장을 먼저 해 테스트를 나중에 하고 있으면 수집이 되지 않았을 것이라고 생각했기 때문에 TDD는 의미가 있어 감동 했다

사용법


git clone https://github.com/aimerald/struby
cd struby
./bin/install

이제 Struby를 설치할 수 있습니다.
나머지는
require 'struby'

API_TOKEN = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
athlete = Struby::Athlete.new(API_TOKEN)
activities = athlete.activities
puta activities.first.distance
# => 10000
my_bike = athlete.bikes.first
puts my_bike.distance
# => 4400

club = athlete.clubs.first
puts clubs.name
# => I am Specialized

이런 느낌!

만들어 보자.



처음으로 require해서 호출하는 Gem을 만들었지만 Ruby는 TDD의 방침도 명확하게 준비해 주고 있기 때문에 고맙다고 생각했다.
Rails에서의 메소드 호출을 참고로 하면서 구현했기 때문에 꽤 객체 지향적인 코드가 되고 있다고 생각하고 공부가 되었기 때문에 만들어 좋았던 대만족!

좋은 웹페이지 즐겨찾기