Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Rails with Node.js - a Reese's Moment
Search
Jerry Cheung
September 26, 2011
Programming
500
1
Share
Rails with Node.js - a Reese's Moment
Introduction to Node.js and how to use it alongside Rails.
Jerry Cheung
September 26, 2011
More Decks by Jerry Cheung
See All by Jerry Cheung
Let's Build Software!
jch
3
170
Evented Ruby vs. Node.js
jch
9
1.9k
Streaming APIs with Ruby
jch
5
670
Evented Ruby vs Node.js
jch
15
4k
Sproutcore Introduction @ LAHN
jch
1
180
Other Decks in Programming
See All in Programming
20260514_its_the_context_window_stupid.pdf
heita
0
1.1k
Structured Concurrency, Scoped Values and Joiners in the JDK 25 26 27
josepaumard
1
160
Cloudflare で始める Data Platform
ta93abe
0
210
AI時代だからこそ「Bloc」を採用する価値があるのかもしれない
takuroabe
0
220
GitHub Copilot CLIのいいところ
htkym
2
540
OCRを使ってゲームのアイテムをデータ化する
kishikawakatsumi
0
110
次世代リンターで探る、tsgo 時代における型認識カスタムルールの現実解
ytakahashii
1
750
WebAssembly を読み込むベストプラクティス 2026年春版 / Best Practices for Loading WebAssembly (Spring 2026)
petamoriken
5
1.1k
Are We Really Coding 10× Faster with AI?
kohzas
0
210
AIエージェントと協働するCLI開発 — BunとOpenClawで学んだこと
yoshikouki
1
140
AgentCore Optimizationを始めよう!
licux
3
260
リセットCSSを1行消したらアクセシビリティが向上した話
pvcresin
4
530
Featured
See All Featured
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
350
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
330
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.2k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
New Earth Scene 8
popppiees
3
2.2k
Statistics for Hackers
jakevdp
799
230k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Raft: Consensus for Rubyists
vanstee
141
7.4k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.6k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
240
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
250
Transcript
Rails with Node.js a Reese’s Moment Monday, September 26, 11
Me Monday, September 26, 11
In a Nutshell Monday, September 26, 11
In a Nutshell • Framework for building network apps Monday,
September 26, 11
In a Nutshell • Framework for building network apps •
First class evented I/O Monday, September 26, 11
In a Nutshell • Framework for building network apps •
First class evented I/O • Built on top of V8 Monday, September 26, 11
What it ain’t Monday, September 26, 11
What it ain’t • NOT a browser side Javascript library
Monday, September 26, 11
What it ain’t • NOT a browser side Javascript library
• NOT a full fledged webapp framework Monday, September 26, 11
A Simple Example Monday, September 26, 11
A Simple Example (1..3).each do |i| contents = File.read('presentation.key') puts
"#{i}. Finished reading file" puts "#{i}. doing something important..." end Monday, September 26, 11
A Simple Example 1. Finished reading file 1. doing something
important... 2. Finished reading file 2. doing something important... 3. Finished reading file 3. doing something important... Monday, September 26, 11
A Simple Example var fs = require('fs'); for (var i=1;
i<=3; i++) { fs.readFile('presentation.key', function(err, data) { console.log(i + ". Finished reading file"); }); console.log(i + ". doing something important..."); } Monday, September 26, 11
A Simple Example var fs = require('fs'); for (var i=1;
i<=3; i++) { fs.readFile('presentation.key', function(err, data) { console.log(i + ". Finished reading file"); }); console.log(i + ". doing something important..."); } Monday, September 26, 11
A Simple Example 1. doing something important... 2. doing something
important... 3. doing something important... 4. Finished reading file 4. Finished reading file 4. Finished reading file Monday, September 26, 11
Trust Callbacks Monday, September 26, 11
Trust Callbacks • Async programming is trickier Monday, September 26,
11
Trust Callbacks • Async programming is trickier • ...But it
doesn’t block your other code Monday, September 26, 11
Go to Jail “Node jails you into this evented- style
programming. You can’t do things in a blocking way, you can’t write slow programs.” - Ryan Dahl Monday, September 26, 11
Some Real Examples Monday, September 26, 11
Some Real Examples • Real-time dashboards and analytics Monday, September
26, 11
Some Real Examples • Real-time dashboards and analytics • Push
notifications Monday, September 26, 11
Some Real Examples • Real-time dashboards and analytics • Push
notifications • Fast file uploads Monday, September 26, 11
Dashboards + Analytics https://github.com/etsy/statsd Monday, September 26, 11
Dashboards + Analytics http://hummingbirdstats.com/ Monday, September 26, 11
Push Notifications https://github.com/mape/node-wargames Monday, September 26, 11
File Uploaders Monday, September 26, 11
File Uploaders • Slow to parse the encoded upload body
Monday, September 26, 11
File Uploaders • Slow to parse the encoded upload body
• Post-processing & background jobs Monday, September 26, 11
File Uploaders require 'sinatra' # curl -F "
[email protected]
" http://localhost:4567/upload post
'/upload' do # already written to params[:data][:tempfile] "" end Monday, September 26, 11
Upload Benchmarks MRI Ruby 1.8.7 and 1.9.2 with Sinatra 1.2.1
Node 0.5.0 2.66 GHz i7 2000 iterations on a 295 byte file Monday, September 26, 11
Upload Benchmarks MRI Ruby 1.8.7 and 1.9.2 with Sinatra 1.2.1
Node 0.5.0 2.66 GHz i7 2000 iterations on a 295 byte file Monday, September 26, 11
Upload Benchmarks MRI Ruby 1.8.7 and 1.9.2 with Sinatra 1.2.1
Node 0.5.0 2.66 GHz i7 2000 iterations on a 295 byte file Ruby 67 minutes 3.5 seconds Node 23.9 seconds Monday, September 26, 11
Upload Benchmarks MRI Ruby 1.8.7 and 1.9.2 with Sinatra 1.2.1
Node 0.5.0 2.66 GHz i7 2000 iterations on a 295 byte file Ruby 67 minutes 3.5 seconds Node 23.9 seconds Monday, September 26, 11
Upload Benchmarks MRI Ruby 1.8.7 and 1.9.2 with Sinatra 1.2.1
Node 0.5.0 2.66 GHz i7 2000 iterations on a 295 byte file Ruby 67 minutes 3.5 seconds Node 23.9 seconds Monday, September 26, 11
Upload Benchmarks MRI Ruby 1.8.7 and 1.9.2 with Sinatra 1.2.1
Node 0.5.0 2.66 GHz i7 2000 iterations on a 295 byte file Ruby 67 minutes 3.5 seconds Node 23.9 seconds Monday, September 26, 11
No Silver Bullet Monday, September 26, 11
No Silver Bullet • Not a replacement for Ruby Monday,
September 26, 11
No Silver Bullet • Not a replacement for Ruby •
Use where it makes sense Monday, September 26, 11
No Silver Bullet • Not a replacement for Ruby •
Use where it makes sense • Doesn’t guarantee scalability Monday, September 26, 11
Wrapup Monday, September 26, 11
Wrapup • Server side Javascript rules! Monday, September 26, 11
Wrapup • Server side Javascript rules! • Event driven style
of programming Monday, September 26, 11
Wrapup • Server side Javascript rules! • Event driven style
of programming • Good for specific problems Monday, September 26, 11
Thanks! Questions?
[email protected]
@whatcodecraves http://whatcodecraves.com Monday, September 26, 11