Top Banner
Как упростить разработку API на Ruby, используя TDD Сергей Селецкий @sseletskyy [email protected]
58

WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

Aug 12, 2015

Download

Technology

GeeksLab
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

Как упростить разработку API на Ruby, используя TDD

Сергей Селецкий

@sseletskyy [email protected]

Page 2: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"
Page 3: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"
Page 4: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"
Page 5: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"
Page 6: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"
Page 7: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

+ сравнение API движков + ускоряем рельсы + организовываем код + документация + тесты, factory girl, fixtures + фоновые задачи

ContentsСодержание

Page 8: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

Cхема использования

Server API

Page 9: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

Cхема обработки запроса в Rails

Page 10: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

Cхема обработки запроса в Rails

REQUESTER

REQUESTER

Page 11: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

Решения для разработки APIRAILS::API+ full stack

framework + requires rails

skills only - not so

lightweight

Page 12: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

Решения для разработки APIRAILS::API GRAPE

+ API versioning + API doc gen - not a full stack

framework - requires expert

skills or integration with Rails

+ full stack framework

+ requires rails skills only

- not so lightweight

Page 13: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

Решения для разработки APIRAILS::API GRAPE

+ lightweight - not a full stack

framework - requires

expert skills

SINATRA+ API versioning + API doc gen - not a full stack

framework - requires expert

skills or integration with Rails

+ full stack framework

+ requires rails skills only

- not so lightweight

Page 14: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

+ отключить неиспользуемые subframeworks

GRAPE + RAILSУскоряем рельсы

Page 15: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

+ отключить неиспользуемые subframeworks + отключить все middleware кроме router

GRAPE + RAILSУскоряем рельсы

> rake middleware

Page 16: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

> rake middlewareuse Rack::Sendfile use ActionDispatch::Static use Rack::Lock use #<ActiveSupport::Cache::Strategy::LocalCache::Middleware:0x007fa9944b2a90> use Rack::Runtime use Rack::MethodOverride use ActionDispatch::RequestId use Rails::Rack::Logger use ActionDispatch::ShowExceptions use WebConsole::Middleware use ActionDispatch::DebugExceptions use BetterErrors::Middleware use ActionDispatch::RemoteIp use ActionDispatch::Reloader use ActionDispatch::Callbacks use ActiveRecord::Migration::CheckPending use ActiveRecord::ConnectionAdapters::ConnectionManagement use ActiveRecord::QueryCache use ActionDispatch::Cookies use ActionDispatch::Session::CookieStore use ActionDispatch::Flash use ActionDispatch::ParamsParser use Rack::Head use Rack::ConditionalGet use Rack::ETag

Page 17: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

> rake middlewareapplication.rb

Page 18: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

+ отключить неиспользуемые subframeworks + отключить все middleware кроме router + отключить cache_store

GRAPE + RAILSУскоряем рельсы

Page 19: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

+ отключить неиспользуемые subframeworks + отключить все middleware кроме router + отключить cache_store + установить log_level = :error

GRAPE + RAILSУскоряем рельсы

Page 20: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

GRAPE + RAILSОрганизовываем код

Page 21: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

/api/v1/…

/app/api/demo/root.rb

Page 22: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

/api/v1/…/api/v2/…

/app/api/demo/root.rb

Page 23: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

/app/api/demo/version_1/root.rb

Page 24: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

/api/v1

/app/api/demo/version_1/big_data.rb

Page 25: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

/api/v1/api/v1/big_data

Page 26: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

/api/v1/api/v1/big_data

POST /api/v1/big_data

Page 27: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

/api/v1/api/v1/big_data

POST /api/v1/big_data

GET /api/v1/big_data

Page 28: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

SwaggerДокументация

Page 29: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

/app/api/demo/root.rb

Page 30: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

/app/api/demo/root.rb

Page 31: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

/app/api/demo/root.rb

Page 32: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

PUT SWAGGER UI into [project]/public/api/docs

Page 33: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

/config/application.rb

Page 34: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"
Page 35: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"
Page 36: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"
Page 37: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"
Page 38: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"
Page 39: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

RSpecСпецификации

(т.е. тесты)

Page 40: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

gem 'rspec-rails'

>rails g rspec:install

Page 41: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"
Page 42: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"
Page 43: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"
Page 44: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

Page 45: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"
Page 46: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"
Page 47: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"
Page 48: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

- Factory Girl- Девушка с фабрики

Page 49: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"
Page 50: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"
Page 51: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"
Page 52: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

+ Fixtures+ Фикстуры

Page 53: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"
Page 54: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"
Page 55: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

Фоновые задачиBackground jobs

Page 56: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"
Page 57: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"
Page 58: WebCamp:Back-end Developers Day. Сергей Селецкий "Как упростить разработку API на Ruby используя TDD"

@sseletskyy

Вопросы?THANK YOU