Download presentation
Presentation is loading. Please wait.
1
Single Page Apps with Breeze and Ruby
2
http://pluralsight.com/training/Courses/TableOfContents/single-page-apps-jumpstarthttps://github.com/johnpapa/PluralsightSpaJumpStartFinal John Papas Code Camper Jumpstart
3
Features Multi-entity model Navigation properties / cached lookup lists Projections / partial entities Change notification Dirty checking Validation Save Local storage
4
Keys Client app is server agnostic (almost) Ruby on Rails (RoR) server Straight rails; no breeze.ruby components REST API Python web server No MS
5
Not anti-Microsoft
6
If it works in Ruby it can work for you
7
Run it 1.Download from GitHubDownload from GitHub 2.Setup install gems and create sample MySQL database 3.Start rails server bundle exec rails s 4.Start client application server python –m http.server 5.Launch in browser http://localhost:8000 ~\ccjs_ruby\rails>bundle exec rails s
8
Demo
9
Web Server HTML, JavaScript, CSS, images
10
Code Tour
11
RoR Server
12
RoR Server – Configuration Locate the My SQL database
13
RoR Server – Configuration Breeze Metadata
14
RoR Server – Model View Controller
15
RoR Server – Controllers Cross Origin Resource Sharing
16
RoR Server – Models
17
RoR Server - Controllers Sessions Controller GET by id GET all PUT POST DELETE
18
Sessions Controller – Index (get all) Partial entity if $select in query Default sort order is time_slot_id but client typically wants by timeslot, track, speaker name Make speaker available in case sorting on speaker name Projection (selected fields)
19
RoR Server – Session Views
20
RoR Server – Controllers
21
RoR Server - Views
22
API Differences
23
Rails serialization vs JSON.NET serialization Rails Session JSON.NET Session Rails-style entity property_names No $id node property $type node property is readable (v. anonymous type)
24
Rails REST update vs Breeze save changes PUT to resource w/ id=1 Send only the changed values POST to SaveChanges Send entire entity
25
Adjust breeze client for Rails API
26
Configure adapters Inject with RequireJS Breeze extension points
27
AjaxRestInterceptor Tweak the breeze ajax adapter to convert OData id-query into a REST URL e.g., /breeze/Sessions/?$filter=id eq 1 /breeze/Sessions/1
28
DataServiceAdapter Replace POST to SaveChanges with REST PUT/POST/DELETE to entity type controllers
29
JsonResultsAdapter Identify partial entity JSON data nodes
30
NamingConvention Convert property names e.g., timeSlotId time_slot_id
31
Thank you, RubyTribe
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.