Slide 1

Slide 1 text

How to Explore a Large Rails Application Nikolay Bienko, AT Consulting @bikolyarb [email protected]

Slide 2

Slide 2 text

Plan UI Traversing & Domain knowledge Get the app up and running Estimate codebase Check out primary entities ApplicationController Follow main use cases POROs and pattern objects

Slide 3

Slide 3 text

UI Traversing & Domain knowledge Explore what is your app about Documentation Grasp domain knowledge

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Get the app up and running Make tests green bin/setup rake --tasks routes.rb gemfile-verboser

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

gemfile-verboser

Slide 12

Slide 12 text

Estimate codebase rake stats wc -l app/models/**/*.rb | sort gem ‘rails-erd’ gem ‘railroady’

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

wc -l app/models/**/*.rb wc -l app/controllers/**/*.rb

Slide 16

Slide 16 text

gem ‘rails-erd’

Slide 17

Slide 17 text

gem ‘railroady’

Slide 18

Slide 18 text

Check out primary entities Entity-Relationship Diagrams schema.rb gem ‘annotate’

Slide 19

Slide 19 text

gem ‘annotate’

Slide 20

Slide 20 text

ApplicationController Callbacks Methods and helper methods Authentication

Slide 21

Slide 21 text

ApplicationController

Slide 22

Slide 22 text

Follow main use cases routes -> controller -> model -> view pry pry-byebug stack-trace Introspection methods ctags Integration testing gem ‘rails-footnotes’ gem ‘state_machine’ with graphs

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

gem ‘rails-footnotes’

Slide 25

Slide 25 text

gem ‘state_machine’ with graphs

Slide 26

Slide 26 text

POROs and pattern objects lib app/services app/decorators app/facades app/helpers

Slide 27

Slide 27 text

Summary UI Traversing & Domain knowledge Get the app up and running Estimate codebase Check out primary entities ApplicationController Follow main use cases POROs and pattern objects

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

Feedback is welcome Nikolay Bienko, AT Consulting @bikolyarb [email protected]