14
Organizing Rails Code Namespacing::Approach

Organizing Rails Code. Namespacing::Approach

Embed Size (px)

DESCRIPTION

Organizing Rails Code. Namespacing::Approach

Citation preview

Page 1: Organizing Rails Code. Namespacing::Approach

Organizing Rails Code

Namespacing::Approach

Page 2: Organizing Rails Code. Namespacing::Approach

@vrybas

http://vrybas.github.io/

Page 3: Organizing Rails Code. Namespacing::Approach

Typical Rails Architecture

Page 4: Organizing Rails Code. Namespacing::Approach

Services

Service Layer

Page 5: Organizing Rails Code. Namespacing::Approach

The `/lib` of Doom

Page 6: Organizing Rails Code. Namespacing::Approach

1. Extract Value Objects2. Extract Service Objects3. Extract Form Objects4. Extract Query Objects5. Introduce View Objects6. Extract Policy Objects

7. Extract Decorators

Page 7: Organizing Rails Code. Namespacing::Approach

The `/app` of Doom

Page 8: Organizing Rails Code. Namespacing::Approach

Namespaces For The Win!

Dashboard displays Users List

1. Paginated2. Sortable

3. Searchable4. `current-user` specific

Page 9: Organizing Rails Code. Namespacing::Approach

Create Namespaced Class

Page 10: Organizing Rails Code. Namespacing::Approach

Use Namespaced class

Page 11: Organizing Rails Code. Namespacing::Approach

The same in other controllers(assuming we got several user lists with different behavior)

`/lib` is for “shared” code ony. e.g ‘paginated’

Page 12: Organizing Rails Code. Namespacing::Approach

The same with models

Page 13: Organizing Rails Code. Namespacing::Approach

Services

VS

Big Ball of Mud

Living Organism

Page 14: Organizing Rails Code. Namespacing::Approach

Thanks!Questions?

We’re hiring at

http://oozou.com/

[email protected]