Slide 1

Slide 1 text

A Tale of Two Pods

Slide 2

Slide 2 text

Who the heck is this guy? ● Ember Core Team ● Aptible ● General Open Source Addict twitter: rwjblue github: rwjblue

Slide 3

Slide 3 text

Thank You!!

Slide 4

Slide 4 text

What are pods?

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Great, :shipit:

Slide 7

Slide 7 text

The End

Slide 8

Slide 8 text

● 2014-01-19 ● “Simple” ● names + types ● non-configurable Pods v1.0

Slide 9

Slide 9 text

Router.map(function() { this.route('post', function() { this.route('comments', function() { this.route('show'); }); }); }); Example Setup - Routes

Slide 10

Slide 10 text

app/application/route.js app/application/template.hbs app/index/route.js app/index/template.hbs app/post/route.js app/post/template.hbs Pods v1.0 - Files

Slide 11

Slide 11 text

app/post/index/route.js app/post/index/template.hbs app/post/comments/route.js app/post/comments/template.hbs app/post/comments/index/route.js app/post/comments/index/template.hbs Pods v1.0 - Files

Slide 12

Slide 12 text

app/post/comments/show/route.js app/post/comments/show/template.hbs app/post/model.js app/post/serializer.js app/post/adapter.js app/comment/model.js Pods v1.0 - Files

Slide 13

Slide 13 text

{{posts/display-post post=post}}
app/posts/display-post/component.js app/posts/display-post/template.hbs Pods v1.0 - Local Invocation

Slide 14

Slide 14 text

{{display-post post=post}}
app/display-post/component.js app/display-post/template.hbs Pods v1.0 - Global Invocation

Slide 15

Slide 15 text

● 2014-04-07 ● complete refactor / overhaul ● adds configurability Pods v1.5

Slide 16

Slide 16 text

moduleNameLookupPatterns: Em.computed(function() { let defaults = this._super(...arguments); return defaults.push(this.snowflakeModules); }), Pods v1.5 - Customization

Slide 17

Slide 17 text

Pods v1.5 - Customization snowflakeModules: function(name) { return 'snowflake/' + name.fullNameWithoutType + '/' + name.type'; }

Slide 18

Slide 18 text

{{posts/display-post post=post}}
...snip app/snowflake/posts/display-post/component.js app/snowflake/posts/display-post/template.hbs Pods v1.5 - Custom Invocation

Slide 19

Slide 19 text

● 2014-07-24 ● Allows `app/components//` Pods v1.75

Slide 20

Slide 20 text

{{posts/display-post post=post}}
...snip app/components/posts/display-post/component.js app/components/posts/display-post/template.hbs Pods v1.75- Local Invocation

Slide 21

Slide 21 text

{{display-post post=post}}
...snip app/components/display-post/component.js app/components/display-post/template.hbs Pods v1.75- Global Invocation

Slide 22

Slide 22 text

What is wrong with Pods 1.x? ● Inconsistent Rules ● Not “portable” ● Too much variation ● Melding of “UI” and “Data” ● Naming Conflicts ● Addons?

Slide 23

Slide 23 text

Where do we go from here?

Slide 24

Slide 24 text

Pods v2.0 - Requirements ● Consistent Rules ● Portable ● Separation of “UI” and “Data” (notice a theme?)

Slide 25

Slide 25 text

Router.map(function() { this.route('post', function() { this.route('comments', function() { this.route('show'); }); }); }); Example Setup - Routes

Slide 26

Slide 26 text

app/routes/application/route.js app/routes/application/template.hbs app/routes/index/route.js app/routes/index/template.hbs app/routes/post/route.js app/routes/post/template.hbs Pods v2.0 - Files

Slide 27

Slide 27 text

app/routes/post/index/route.js app/routes/post/index/template.hbs app/routes/post/routes/comments/route.js app/routes/post/routes/comments/template.hbs app/routes/post/routes/comments/routes/index/route.js app/routes/post/routes/comments/routes/index/template.hbs Pods v2.0 - Files

Slide 28

Slide 28 text

app/routes/post/routes/comments/routes/show/route.js app/routes/post/routes/comments/routes/show/template.hbs app/models/post/model.js app/models/post/serializer.js app/models/post/adapter.js Pods v2.0 - Files

Slide 29

Slide 29 text

{{display-post post=post}}
app/routes/posts/components/display-post/component.js app/routes/posts/components/display-post/template.hbs // OR app/routes/posts/components/display-post.{js,hbs} Pods v2.0 - Local Invocation

Slide 30

Slide 30 text

{{display-post post=post}}
app/components/display-post/component.js app/components/display-post/template.hbs Pods v2.0 - Global Invocation

Slide 31

Slide 31 text

app/models/post.js // OR app/models/post/model.js app/models/post/serializer.js app/models/post/adapter.js Pods v2.0 - Data

Slide 32

Slide 32 text

route.js template.hbs controller.js | component.js components/ helpers/ routes/ Pods v2.0 - “UI” Level

Slide 33

Slide 33 text

{{ember-admin::model-title model=model}}
... < inside node_modules/ember-admin/ > addon/components/model-title/component.js addon/components/model-title/template.hbs Pods v2.0 - Addon Invocation

Slide 34

Slide 34 text

Pods v2.0 - Concepts ● Layer Symmetry ● Local Lookup ● Addon Support

Slide 35

Slide 35 text

The End