Classy Web Development With Ruby, Sinatra And Heroku
-
Upload
cannikin -
Category
Technology
-
view
24.195 -
download
1
description
Transcript of Classy Web Development With Ruby, Sinatra And Heroku
![Page 1: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/1.jpg)
Ruby, Sinatra and Heroku
Get a site online in five minutes or less.
Classy Web Development with
![Page 2: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/2.jpg)
But first...
![Page 3: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/3.jpg)
serve
![Page 4: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/4.jpg)
serveGet a site online* in 5 seconds!
![Page 5: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/5.jpg)
serve*localhost
Get a site online* in 5 seconds!
![Page 6: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/6.jpg)
rob$ serve
![Page 7: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/7.jpg)
rob$ serve[2010-03-23 11:35:38] INFO WEBrick 1.3.1[2010-03-23 11:35:38] INFO ruby 1.8.7 (2008-08-11)[2010-03-23 11:35:38] INFO Serve::Server#start: pid=63741 port=4000
![Page 8: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/8.jpg)
rob$ serve[2010-03-23 11:35:38] INFO WEBrick 1.3.1[2010-03-23 11:35:38] INFO ruby 1.8.7 (2008-08-11)[2010-03-23 11:35:38] INFO Serve::Server#start: pid=63741 port=4000
![Page 9: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/9.jpg)
rob$ serve[2010-03-23 11:35:38] INFO WEBrick 1.3.1[2010-03-23 11:35:38] INFO ruby 1.8.7 (2008-08-11)[2010-03-23 11:35:38] INFO Serve::Server#start: pid=63741 port=4000
http://localhost:4000
![Page 10: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/10.jpg)
rob$ serve[2010-03-23 11:35:38] INFO WEBrick 1.3.1[2010-03-23 11:35:38] INFO ruby 1.8.7 (2008-08-11)[2010-03-23 11:35:38] INFO Serve::Server#start: pid=63741 port=4000
http://localhost:4000
![Page 11: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/11.jpg)
rob$ serve[2010-03-23 11:35:38] INFO WEBrick 1.3.1[2010-03-23 11:35:38] INFO ruby 1.8.7 (2008-08-11)[2010-03-23 11:35:38] INFO Serve::Server#start: pid=63741 port=4000localhost - - [23/Mar/2010:11:54:40 PDT] "GET / HTTP/1.1" 200 0- -> /localhost - - [23/Mar/2010:11:54:40 PDT] "GET /stylesheets/reset-fonts.css HTTP/1.1" 200 0http://localhost:4000/ -> /stylesheets/reset-fonts.csslocalhost - - [23/Mar/2010:11:54:40 PDT] "GET /stylesheets/screen.css HTTP/1.1" 200 0http://localhost:4000/ -> /stylesheets/screen.csslocalhost - - [23/Mar/2010:11:54:40 PDT] "GET /stylesheets/syntax.css HTTP/1.1" 200 0http://localhost:4000/ -> /stylesheets/syntax.csslocalhost - - [23/Mar/2010:11:54:40 PDT] "GET /javascripts/prototype.js HTTP/1.1" 200 0http://localhost:4000/ -> /javascripts/prototype.jslocalhost - - [23/Mar/2010:11:54:40 PDT] "GET /javascripts/effects.js HTTP/1.1" 200 0http://localhost:4000/ -> /javascripts/effects.jslocalhost - - [23/Mar/2010:11:54:40 PDT] "GET /javascripts/stack.js HTTP/1.1" 200 0http://localhost:4000/ -> /javascripts/stack.js[2010-03-23 11:54:41] ERROR `/favicon.ico' not found.localhost - - [23/Mar/2010:11:54:41 PDT] "GET /favicon.ico HTTP/1.1" 404 281
![Page 12: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/12.jpg)
demoserve
![Page 13: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/13.jpg)
questions?
![Page 14: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/14.jpg)
Sinatra
![Page 15: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/15.jpg)
![Page 16: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/16.jpg)
![Page 17: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/17.jpg)
require 'rubygems'require 'sinatra'get '/hi' do "Hello World!"end
hi.rb-----
![Page 18: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/18.jpg)
rob$ ruby hi.rb
![Page 19: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/19.jpg)
rob$ ruby hi.rb== Sinatra/0.9.4 has taken the stage on 4567 for development with backup from Thin>> Thin web server (v1.2.4 codename Flaming Astroboy)>> Maximum connections set to 1024>> Listening on 0.0.0.0:4567, CTRL+C to stop
![Page 20: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/20.jpg)
rob$ ruby hi.rb== Sinatra/0.9.4 has taken the stage on 4567 for development with backup from Thin>> Thin web server (v1.2.4 codename Flaming Astroboy)>> Maximum connections set to 1024>> Listening on 0.0.0.0:4567, CTRL+C to stop
![Page 21: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/21.jpg)
rob$ ruby hi.rb== Sinatra/0.9.4 has taken the stage on 4567 for development with backup from Thin>> Thin web server (v1.2.4 codename Flaming Astroboy)>> Maximum connections set to 1024>> Listening on 0.0.0.0:4567, CTRL+C to stop
http://localhost:4567
![Page 22: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/22.jpg)
require 'rubygems'require 'sinatra'get '/hi' do "Hello World!"end
hi.rb-----
![Page 23: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/23.jpg)
rob$ ruby hi.rb== Sinatra/0.9.4 has taken the stage on 4567 for development with backup from Thin>> Thin web server (v1.2.4 codename Flaming Astroboy)>> Maximum connections set to 1024>> Listening on 0.0.0.0:4567, CTRL+C to stop
http://localhost:4567/hi
![Page 24: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/24.jpg)
rob$ ruby hi.rb== Sinatra/0.9.4 has taken the stage on 4567 for development with backup from Thin>> Thin web server (v1.2.4 codename Flaming Astroboy)>> Maximum connections set to 1024>> Listening on 0.0.0.0:4567, CTRL+C to stop
http://localhost:4567/hi
![Page 25: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/25.jpg)
demosinatra/hi
![Page 26: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/26.jpg)
require 'rubygems'require 'sinatra'get '/hi' do "Hello World!"end
![Page 27: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/27.jpg)
require 'rubygems'require 'sinatra'get '/hi' do "Hello World!"end
Ruby package manager
![Page 28: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/28.jpg)
require 'rubygems'require 'sinatra'get '/hi' do "Hello World!"end
Ruby package managerSinatra package (gem)
![Page 29: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/29.jpg)
require 'rubygems'require 'sinatra'get '/hi' do "Hello World!"end
Ruby package managerSinatra package (gem)GET request to /hi
![Page 30: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/30.jpg)
require 'rubygems'require 'sinatra'get '/hi' do "Hello World!"end
Ruby package managerSinatra package (gem)GET request to /hiRespond with text
![Page 31: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/31.jpg)
get '/hi' do "Hello World!"end
![Page 32: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/32.jpg)
get '/hi' do "Hello World!"end
“block”}
![Page 33: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/33.jpg)
get '/hi' do "Hello World!"end
Whatever is returned fromthe block is sent to thebrowser}
![Page 34: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/34.jpg)
Where’s the return?
![Page 35: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/35.jpg)
In Ruby, if you don’t say “return,” it’s implied.
![Page 36: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/36.jpg)
The last statement in a block is always returned.
In Ruby, if you don’t say “return” it’s implied.
![Page 37: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/37.jpg)
get '/hi' do "Hello World!"end
![Page 38: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/38.jpg)
get '/hi' do "Hello World!"end =
![Page 39: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/39.jpg)
get '/hi' do "Hello World!"end
get '/hi' do return "Hello World!"end=
![Page 40: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/40.jpg)
A slightly more complex example
![Page 41: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/41.jpg)
beta.rb-------require 'rubygems'require 'sinatra'
get '/' do html = '<p>Welcome! Leave your email address for more info!</p>' html += '<form method="post" action="/submit">' html += '<input type="text" name="email" /><input type="submit" /></form>' return htmlend
post '/submit' do html = '<p>Thank you for your submission!</p>' html += '<p>We will email ' + params['email'] html += ' when we are ready to launch!</p>' return htmlend
![Page 42: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/42.jpg)
demosinatra/beta1
![Page 43: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/43.jpg)
Views
![Page 44: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/44.jpg)
|-- beta.rb`-- views |-- index.erb `-- submit.erb
`-- beta.rb
![Page 45: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/45.jpg)
erbEmbedded Ruby
![Page 46: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/46.jpg)
beta.rb-------require 'rubygems'require 'sinatra'
get '/' do erb :indexend
post '/submit' do erb :submitend
![Page 47: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/47.jpg)
beta.rb-------require 'rubygems'require 'sinatra'
get '/' do erb :indexend
post '/submit' do erb :submitend
views/index.erb---------------<p>Welcome! Leave your email address for more info!</p><form method="post" action="/submit"> <input type="text" name="email" /> <input type="submit" /></form>
![Page 48: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/48.jpg)
beta.rb-------require 'rubygems'require 'sinatra'
get '/' do erb :indexend
post '/submit' do erb :submitend
views/index.erb---------------<p>Welcome! Leave your email address for more info!</p><form method="post" action="/submit"> <input type="text" name="email" /> <input type="submit" /></form>
views/submit.erb----------------<p>Thank you for your submission!</p><p>We will email <%= params['email'] %> when we are ready to launch!</p>
![Page 49: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/49.jpg)
demosinatra/beta2
![Page 50: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/50.jpg)
Layouts
![Page 51: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/51.jpg)
|-- beta.rb`-- views |-- index.erb |-- layout.erb `-- submit.erb
![Page 52: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/52.jpg)
views/layout.rb---------------<!DOCTYPE html><html><head> <title>Beta Info</title></head><body> <%= yield %></body></html>
![Page 53: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/53.jpg)
views/layout.rb---------------<!DOCTYPE html><html><head> <title>Beta Info</title></head><body> <%= yield %></body></html>
views/index.erb---------------<p>Welcome! Leave your email address for more info!</p><form method="post" action="/submit"> <input type="text" name="email" /> <input type="submit" /></form>
![Page 54: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/54.jpg)
views/layout.rb---------------<!DOCTYPE html><html><head> <title>Beta Info</title></head><body> <%= yield %></body></html>
views/index.erb---------------<p>Welcome! Leave your email address for more info!</p><form method="post" action="/submit"> <input type="text" name="email" /> <input type="submit" /></form>
![Page 55: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/55.jpg)
demosinatra/beta3
![Page 56: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/56.jpg)
Static ContentImages, stylesheets and Javascript
![Page 57: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/57.jpg)
|-- beta.rb`-- views |-- index.erb |-- layout.erb `-- submit.erb
![Page 58: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/58.jpg)
|-- beta.rb|-- public`-- views |-- index.erb |-- layout.erb `-- submit.erb
![Page 59: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/59.jpg)
|-- beta.rb|-- public| `-- stylesheets| `-- shared.css`-- views |-- index.erb |-- layout.erb `-- submit.erb
![Page 60: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/60.jpg)
demosinatra/beta4
![Page 61: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/61.jpg)
So
![Page 62: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/62.jpg)
So1. Every URL you want to respond to goes in your .rb file
![Page 63: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/63.jpg)
So1. Every URL you want to respond to goes in your .rb file
2. Pages themselves go in /views as .erb files
![Page 64: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/64.jpg)
So1. Every URL you want to respond to goes in your .rb file
2. Pages themselves go in /views as .erb files
3. Wrapping layout goes in /views/layout.erb
![Page 65: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/65.jpg)
So1. Every URL you want to respond to goes in your .rb file
2. Pages themselves go in /views as .erb files
3. Wrapping layout goes in /views/layout.erb
4. Static files go in /public
![Page 66: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/66.jpg)
But
![Page 67: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/67.jpg)
ButIf all you have is static web pages, no need to
add every path to your sinatra .rb file and copy the code to /views
![Page 68: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/68.jpg)
ButIf all you have is static web pages, no need to
add every path to your sinatra .rb file and copy the code to /views
Just put them in /public
![Page 69: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/69.jpg)
ButIf all you have is static web pages, no need to
add every path to your sinatra .rb file and copy the code to /views
Just put them in /public
The .rb file is more for dynamic URLs or gathering form fields for use later
![Page 70: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/70.jpg)
Dynamic URLs?
![Page 71: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/71.jpg)
dynamic.rb----------require 'rubygems'require 'sinatra'
get '/' do 'This is the homepage'end
get '/:city' do 'This is the ' + params['city'] + ' homepage'end
![Page 72: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/72.jpg)
demosinatra/dynamic
![Page 73: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/73.jpg)
questions?
![Page 74: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/74.jpg)
Heroku
![Page 75: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/75.jpg)
![Page 76: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/76.jpg)
Kind of like EC2 but specific to Ruby-based web applications
![Page 77: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/77.jpg)
Run your application/websitefor free
![Page 78: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/78.jpg)
Heroku relies on Git.
![Page 79: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/79.jpg)
GitLike subversion, but more powerful (and complex)
![Page 80: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/80.jpg)
rob$ git init .
![Page 81: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/81.jpg)
rob$ git init .Initialized empty Git repository in /Users/rob/Dropbox/Active University/sinatra/heroku1/.git/
![Page 82: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/82.jpg)
rob$ git init .Initialized empty Git repository in /Users/rob/Dropbox/Active University/sinatra/heroku1/.git/
rob$ git add .
![Page 83: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/83.jpg)
rob$ git init .Initialized empty Git repository in /Users/rob/Dropbox/Active University/sinatra/heroku1/.git/
rob$ git add .
rob$ git commit -m ‘First commit’
![Page 84: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/84.jpg)
rob$ git init .Initialized empty Git repository in /Users/rob/Dropbox/Active University/sinatra/heroku1/.git/
rob$ git add .
rob$ git commit -m ‘First commit’[master (root-commit) d2f7469] First commit 5 files changed, 31 insertions(+), 0 deletions(-) create mode 100644 beta.rb create mode 100644 public/stylesheets/shared.css create mode 100644 views/index.erb create mode 100644 views/layout.erb create mode 100644 views/submit.erb
![Page 85: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/85.jpg)
Our app is version controlled
![Page 86: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/86.jpg)
rob$ heroku create
![Page 87: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/87.jpg)
rob$ heroku createCreating blooming-sunrise-28... done!Created http://blooming-sunrise-28.heroku.com/ | [email protected]:blooming-sunrise-28.gitGit remote heroku added
![Page 88: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/88.jpg)
rob$ heroku createCreating blooming-sunrise-28... done!Created http://blooming-sunrise-28.heroku.com/ | [email protected]:blooming-sunrise-28.gitGit remote heroku added
rob$ git push heroku master
![Page 89: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/89.jpg)
rob$ heroku createCreating blooming-sunrise-28... done!Created http://blooming-sunrise-28.heroku.com/ | [email protected]:blooming-sunrise-28.gitGit remote heroku added
rob$ git push heroku masterCounting objects: 10, done.Delta compression using up to 2 threads.Compressing objects: 100% (8/8), done.Writing objects: 100% (10/10), 1009 bytes, done.Total 10 (delta 0), reused 0 (delta 0)
-----> Heroku receiving push ! Heroku push rejected, no Rails or Rack app detected.
error: hooks/pre-receive exited with error code 1To [email protected]:blooming-sunrise-28.git ! [remote rejected] master -> master (pre-receive hook declined)error: failed to push some refs to '[email protected]:blooming-sunrise-28.git'
![Page 90: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/90.jpg)
demosinatra/heroku1
![Page 91: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/91.jpg)
One thing missing
![Page 92: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/92.jpg)
One thing missing
config.ru
![Page 93: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/93.jpg)
|-- beta.rb|-- config.ru|-- public| `-- stylesheets| `-- shared.css`-- views |-- index.erb |-- layout.erb `-- submit.erb
![Page 94: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/94.jpg)
config.ru---------require 'beta'run Sinatra::Application
![Page 95: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/95.jpg)
rob$ git add .
![Page 96: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/96.jpg)
rob$ git add .
rob$ git commit -m 'Added config.ru file for heroku'
![Page 97: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/97.jpg)
rob$ git add .
rob$ git commit -m 'Added config.ru file for heroku'[master 7b8ab4f] Added config.ru file for heroku 1 files changed, 2 insertions(+), 0 deletions(-) create mode 100644 config.ru
![Page 98: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/98.jpg)
rob$ git add .
rob$ git commit -m 'Added config.ru file for heroku'[master 7b8ab4f] Added config.ru file for heroku 1 files changed, 2 insertions(+), 0 deletions(-) create mode 100644 config.ru
rob$ git push heroku master
![Page 99: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/99.jpg)
rob$ git add .
rob$ git commit -m 'Added config.ru file for heroku'[master 7b8ab4f] Added config.ru file for heroku 1 files changed, 2 insertions(+), 0 deletions(-) create mode 100644 config.ru
rob$ git push heroku masterCounting objects: 13, done.Delta compression using up to 2 threads.Compressing objects: 100% (10/10), done.Writing objects: 100% (13/13), 1.27 KiB, done.Total 13 (delta 1), reused 0 (delta 0)
-----> Heroku receiving push-----> Sinatra app detected Compiled slug size is 4K-----> Launching..... done http://blooming-sunrise-28.heroku.com deployed to Heroku
To [email protected]:blooming-sunrise-28.git * [new branch] master -> master
![Page 100: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/100.jpg)
demosinatra/heroku2
![Page 101: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/101.jpg)
So
![Page 102: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/102.jpg)
So1. Get your app working in development
![Page 103: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/103.jpg)
So1. Get your app working in development
2. Add a config.ru file
![Page 104: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/104.jpg)
So1. Get your app working in development
2. Add a config.ru file
3. git init . (only the first time)
![Page 105: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/105.jpg)
So1. Get your app working in development
2. Add a config.ru file
3. git init . (only the first time)
4. git add .
![Page 106: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/106.jpg)
So1. Get your app working in development
2. Add a config.ru file
3. git init . (only the first time)
4. git add .
5. git commit -m ‘message’
![Page 107: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/107.jpg)
So1. Get your app working in development
2. Add a config.ru file
3. git init . (only the first time)
4. git add .
5. git commit -m ‘message’
6. heroku create (only the first time)
![Page 108: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/108.jpg)
So1. Get your app working in development
2. Add a config.ru file
3. git init . (only the first time)
4. git add .
5. git commit -m ‘message’
6. heroku create (only the first time)
7. git push heroku master
![Page 109: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/109.jpg)
questions?
![Page 110: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/110.jpg)
Installation
Ruby 1.8.6 or higherhttp://ruby-lang.org
Rubygems 1.3.6http://rubyforge.org/projects/rubygems
Get Serve, Sinatra and Heroku gemsgem install serve sinatra heroku
Githttp://git-scm.com/download
![Page 111: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/111.jpg)
Resources
Ruby Homepagehttp://ruby-lang.org
Sinatra Homepagehttp://www.sinatrarb.com
Heroku Homepagehttp://heroku.com
Git Homepagehttp://git-scm.com
Example Codehttp://empty-journey-91.heroku.com/
![Page 112: Classy Web Development With Ruby, Sinatra And Heroku](https://reader034.fdocuments.in/reader034/viewer/2022051411/5454eb67af795998788b45ed/html5/thumbnails/112.jpg)
The End