rails api + js app

29
React + Rails API

Upload: knomedia

Post on 15-Jul-2015

567 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Rails api + JS app

React + Rails API

Page 2: Rails api + JS app

React + Rails APIJavascript App

Page 3: Rails api + JS app

@jason_madsen

knomedia

jmadsen

Page 4: Rails api + JS app

The ProblemFront End App with a Rails API

Page 5: Rails api + JS app

The ProblemFront End App with a Rails API

1 App or

2 Apps?

Page 6: Rails api + JS app

Beware of the YAGNI Police

Page 7: Rails api + JS app

You Ain’t Gonna Need It

Page 8: Rails api + JS app

You Ain’t Gonna Need ItAre

Page 9: Rails api + JS app

2 Apps

• Forces App vs API distinction

• Other consumers of API should be *easier*

• API releases are independent of client

• CORS and potential extra OPTIONS requests :(

• Or use a thin server and proxy requests for client

Page 10: Rails api + JS app

Single App

• Potentially easier to sync releases

• Less friction to coordinate deploy (one deploy vs two)

• Easier to push features that cut into both apps

• Fits existing mental modal of a “rails app”

Page 11: Rails api + JS app

Your App will grow

Page 12: Rails api + JS app

API

thin client server

JS APP

proxy api calls

Page 13: Rails api + JS app

railsJS APP

Page 14: Rails api + JS app

rails

JS and assets stored onS3

redis

S3

jsapp:current

Luke Melia - Railsconf **Lighting Fast Deployment of your Rails backed Javascript app

HTML is stored

in redis, loaded and served via

rails

Page 15: Rails api + JS app

railsJS APP

Page 16: Rails api + JS app

Treat it Like 2Deploy it like a single rails app

Page 17: Rails api + JS app

Things to consider

• Your front end app is it’s own app

• it should own it’s build, tests, etc

Page 18: Rails api + JS app

Things to consider

• build your JS app into a file(s) for rails to consume

• let asset pipeline hash built files as normal

Page 19: Rails api + JS app

!"" app #   !"" assets #   #   !"" images #   #   !"" javascripts #   #   #   !"" application.js #   #   #   $"" bundle.js

built file from JS app

Let asset pipeline deal with it from there

Page 20: Rails api + JS app

Tempting, but don’t!

• Inject session auth from rails into JS app

• Bootstrapping HTML from rails land

• User data

• feature data (i.e. rollout)

• ENV

• Analytics

Page 21: Rails api + JS app

webpack_assets

https://rubygems.org/gems/webpack_assets

http://www.tomdooner.com/2014/05/26/webpack.html

adds a webpack build step into your rails assets:precompile rake task

Page 22: Rails api + JS app
Page 23: Rails api + JS app

webpack_assets

bin/rake assets:webpack:watch

Run the watcher during development to rebuild JS app on file changes

Page 24: Rails api + JS app

webpack_assetsYou’ll need to have a node environment on

the machine that does your build

Don’t forget to `npm install` before building

Page 25: Rails api + JS app

railsJS APP

Page 26: Rails api + JS app

API

thin client

JS APP

proxy api calls

Page 27: Rails api + JS app

rails redis

S3

jsapp:current

JS and assets stored onS3

Page 28: Rails api + JS app

Questions?

Page 29: Rails api + JS app

Thanks!