SlideShare a Scribd company logo
1 of 212
Download to read offline
...
...
Ruby on Rails
...en introduktion
Ruby on Rails
...en introduktion
Vem är jag?
Victor Sollerhed
@MPV3
Ruby
Java
HTML
CSS
PHP
C++
ASPVBscript
Javascript
C#
Varför?
Bra verktyg
”Ringar på vattnet”
riviera2008 på Flickr
3
Agenda
1 Imponerad?
2 HTML
3 Ruby
... Paus
4 Rails
5 Installation
6 Utveckling
7 Demo
8 Skarpt läge
9 Labb
10 Fortsätt själv
1 Imponerad?
2 Vad är HTML?
3 Vad är Ruby?
... Paus
4 Vad är Rails?
5 Hur installerar man?
6 Hur gör man?
7 Demo
8 Hur driftsätter man?
9 Labb
10 Hur fortsätter man?
Agenda
Ruby on Rails
}}
Språk
Ramverk
Programmerings-
språk
Webb-
ramverk
Impress me!
brent_nashville on Flickr
”Man skall hålla reda på alla uppgifter
om medlemmarna och klubbens
schemalagda aktiviteter”
Demo
Vem använder Rails?
Twitter MTV style Shopify Zendesk
Urban Dictionary
Geni
A List Apart
Hulu
Basecamp
Blinksale Github
43 ThingsKongregate
Get Satisfaction Yellow PagesFunny or Die
Vad har jag gjort i Rails?
HTML
Do you speak it?
Text med ett fett ord.
Text med ett fett ord.
Text med ett fett ord.
fetstil
Text med ett <fetstil>fett</fetstil> ord.
Taggar
Text med ett <fetstil>fett</fetstil> ord.
<strong> Fetstil
<em> Kursivt
<a> Länk
<h1> Rubrik (h1-h6)
Text med ett <strong>fett</strong> ord.
Webbläsare
Webbläsare Webbserver
www.example.com
Webbläsare Webbserver
index.htm www.example.com
<html>
<html>
</html>
<html>
<head>
</head>
</html>
<html>
<head>
</head>
<body>
</body>
</html>
<html>
<head>
<title>Min hemsida</title>
</head>
<body>
</body>
</html>
<html>
<head>
<title>Min hemsida</title>
</head>
<body>
<h1>En rubrik</h1>
</body>
</html>
<html>
<head>
<title>Min hemsida</title>
</head>
<body>
<h1>En rubrik</h1>
<p>Lite text...</p>
</body>
</html>
http://www.example.com/index.html
<a>Annan sida</a>
<a >Annan sida</a>
<a href=” ”>Annan sida</a>
<a href=”anotherpage.htm”>Annan sida</a>
Annan sida
Dagens
sidotips:
Vad är Ruby?
Japan
1994
...designade för datorer,
inte för människor.
Låt datorn göra jobbet åt dig
Med språk och bibliotek
designade för människor...
...kan vi låta någon annan
bry sig om prestandan.
Hello world!
Java
public class MyClass{
public static void main(String args[]){
System.out.println(”Hello world!”);
}
}
public class MyClass{
public static void main(String args[]){
System.out.println(”Hello world!”);
}
}
Ruby
puts ”Hello world!”
Java
public class MyClass{
public static void main(String args[]){
System.out.println(”Hello world!”);
}
}
Vända på en sträng då?
2.hours.ago
2.hours.ago
5.times { print ”Hello” }
Allt är objekt
(inga primitiva typer som Java har)
new Date
Date.new
Tolkat
(du slipper kompilera)
Dynamiskt typat
Java
int age = 23;
age = ”tjugotre”;
Java Ruby
int age = 23;
age = ”tjugotre”;
age = 23
age = ”tjugotre”
int age = 23;
Java Ruby
age = ”tjugotre”;
age = 23
age = ”tjugotre”
Duck-typing
Ser det ut som en anka?
Låter det som en anka?
Då är det nog en anka!
är frivilliga
( ) ;och}{
puts ”Hello world!”
puts(”Hello world!”);
eller
class Duck
def initialize
puts ”Quack!”
end
end
class Duck
def initialize
puts ”Quack!”
end
end
d = Duck.new
class Duck
def initialize
puts ”Quack!”
end
end
d = Duck.new
Quack!
gogri on Flickr
Vad är Ruby on Rails?
Ruby on Rails är ett öppet källkods-
webbramverk som är optimerat för
programmerar-glädje och hållbar
produktivitet.
Det låter dig skriva vacker kod genom
att favorisera konventioner över
konfiguration.
Ruby on Rails är ett öppet källkods-
webbramverk som är optimerat för
programmerar-glädje och hållbar
produktivitet.
Det låter dig skriva vacker kod genom
att favorisera konventioner över
konfiguration.
Ramverk
Ta emot inkommande anslutningar
Ta emot inkommande anslutningar
Läs/skriv till databas
Ta emot inkommande anslutningar
Läs/skriv till databas
Skicka svar i HTML, e-post, XML m.m
Ta emot inkommande anslutningar
Läs/skriv till databas
Skicka svar i HTML, e-post, XML m.m
Validering
Ta emot inkommande anslutningar
Läs/skriv till databas
Skicka svar i HTML, e-post, XML m.m
Validering
Tester
David Heinemeier Hansen
David Heinemeier Hansen
Basecamp
David Heinemeier Hansen
Basecamp Backpack
Highrise Campfire
David Heinemeier Hansen
Basecamp Backpack
Highrise Campfire
David Heinemeier Hansen
3 miljoner kunder
Convention over Configuration
Konventioner över Konfiguration
Clarity
over
Cleverness
Tydlighet
över
Fyndighet
DRY
DRYDon’t RepeatYourself
MVC
MVCModel View Controller
Model View Controller
Riktiga saker Webbsidor Vilken vy hämtas?
Databas-åtkomst E-post Hämta rätt modeller
Validering XML
Vilken layout ska
hämtas?
Model View Controller
Riktiga saker Webbsidor Vilken vy hämtas?
Databas-åtkomst E-post Hämta rätt modeller
Validering XML
Vilken layout ska
hämtas?
Model View Controller
Riktiga saker Webbsidor Vilken vy hämtas?
Databas-åtkomst E-post Hämta rätt modeller
Validering XML
Vilken layout ska
hämtas?
Model View Controller
Member.rb index.html.erb MembersController.rb
show.html.erb
edit.html.erb
new.html.erb
Hur fungerar
MVC i Rails?
Klient
Klient
Controller
Klient
Controller
Klient
Controller Model
Klient
Controller Model
Klient
Controller Model DB
Klient
Controller Model DB
Klient
Controller
View
Model DB
Klient
Controller
View
Model DB
Klient
Controller
View
Model DB
Klient
REST
SOAP
SOAP
SOAP REST
vs
URI Verb Funktion
/Members GET Hämtar alla medlemmar
/Members POST Skapar en medlem
/Members/{ID} GET Hämtar en specifik medlem
/Members/{ID} DELETE Tar bort en medlem
URI Verb Funktion
/Members GET Hämtar alla medlemmar
/Members POST Skapar en medlem
/Members/{ID} GET Hämtar en specifik medlem
/Members/{ID} DELETE Tar bort en medlem
URI Verb Funktion
/Members GET Hämtar alla medlemmar
/Members POST Skapar en medlem
/Members/{ID} GET Hämtar en specifik medlem
/Members/{ID} DELETE Tar bort en medlem
URI Verb Funktion
/Members GET Hämtar alla medlemmar
/Members POST Skapar en medlem
/Members/{ID} GET Hämtar en specifik medlem
/Members/{ID} DELETE Tar bort en medlem
URI Verb Funktion
/Members GET Hämtar alla medlemmar
/Members POST Skapar en medlem
/Members/{ID} GET Hämtar en specifik medlem
/Members/{ID} DELETE Tar bort en medlem
URI Verb Funktion
/Members GET Hämtar alla medlemmar
/Members POST Skapar en medlem
/Members/{ID} GET Hämtar en specifik medlem
/Members/{ID} DELETE Tar bort en medlem
URI Verb Funktion
/Members GET Hämtar alla medlemmar
/Members POST Skapar en medlem
/Members/{ID} GET Hämtar en specifik medlem
/Members/{ID} DELETE Tar bort en medlem
URI Verb Funktion
/Members GET Hämtar alla medlemmar
/Members POST Skapar en medlem
/Members/{ID} GET Hämtar en specifik medlem
/Members/{ID} DELETE Tar bort en medlem
URI Verb Funktion
/Members GET Hämtar alla medlemmar
/Members POST Skapar en medlem
/Members/{ID} GET Hämtar en specifik medlem
/Members/{ID} DELETE Tar bort en medlem
URI Verb Funktion
/Members GET Hämtar alla medlemmar
/Members POST Skapar en medlem
/Members/{ID} GET Hämtar en specifik medlem
/Members/{ID} DELETE Tar bort en medlem
URI Verb Funktion
/Members GET Hämtar alla medlemmar
/Members POST Skapar en medlem
/Members/{ID} GET Hämtar en specifik medlem
/Members/{ID} DELETE Tar bort en medlem
URI Verb Funktion
/Members GET Hämtar alla medlemmar
/Members POST Skapar en medlem
/Members/{ID} GET Hämtar en specifik medlem
/Members/{ID} DELETE Tar bort en medlem
URI Verb Funktion
/Members GET Hämtar alla medlemmar
/Members POST Skapar en medlem
/Members/{ID} GET Hämtar en specifik medlem
/Members/{ID} DELETE Tar bort en medlem
URI Verb Funktion
/Members GET Hämtar alla medlemmar
/Members POST Skapar en medlem
/Members/{ID} GET Hämtar en specifik medlem
/Members/{ID} DELETE Tar bort en medlem
URI Verb Funktion
/Members GET Hämtar alla medlemmar
/Members POST Skapar en medlem
/Members/{ID} GET Hämtar en specifik medlem
/Members/{ID} DELETE Tar bort en medlem
URI Verb Funktion
/Members GET Hämtar alla medlemmar
/Members POST Skapar en medlem
/Members/1 GET Hämtar medlem 1
/Members/1 DELETE Tar bort medlem 1
Installera
+
I’m a Mac. I’m a PC. I’m Linux.
http://bit.ly/installera-rails
1. Installera Ruby
2. Installera SQLite3
3. Installera Rails
[sudo] gem install rails
Men hur använder
man det?
Låt oss skapa vår första Rails-app!
Öppna ett terminal-fönster
C:> _
Alice:~ vs$ _
eller
(Gå dit du vill ha din app)
cd minaponnyhästar
Skapa din första Rails-app:
rails min_forsta_app
Kliv in i din app:
cd min_forsta_app
Skapa stommen (scaffold) för en modell:
script/generate scaffold Modell attribut:typ
Skapa stommen (scaffold) för en medlem:
script/generate scaffold Member name:string joined_at:datetime
Skapa stommen (scaffold) för en medlem:
script/generate scaffold Member name:string joined_at:datetime
Modell
Skapa stommen (scaffold) för en medlem:
script/generate scaffold Member name:string joined_at:datetime
Modell Attribut
Skapa stommen (scaffold) för en medlem:
script/generate scaffold Member name:string joined_at:datetime
Modell Attribut Typ
Skapa en databas:
rake db:migrate
Starta din app!
script/server
Testa! Surfa till:
http://localhost:3000
Demo
rails min_forsta_app
cd min_forsta_app
script/generate scaffold Member name:string joined_at:datetime
rake db:migrate
script/server
http://localhost:3000
1. Skapa din app:
2. Kliv in:
3. Skapa stommen för medlemmar:
4. Skapa databasen:
5. Starta webbservern:
6. Besök sidan:
Labb
littlebitmanky on Flickr
Lokal
Lokal Aktivitet
Lokal Aktivitet
*1
Facility Activity
*1
Facility Activity
*1
1. Installera Rails m.m.
2. Skapa en rails-app
3. Skapa grundstommen för Facility och Activity
4. Länka ihop anläggningar med aktiviteter
Facility Activity
*1
Skarpt läge
Installera
-gem+
Versionshantering
git-scm.com
[sudo] gem install heroku
-gem
Skapa ett ”repository”:
git init
Skapa ett ”repository”:
git init
git add .
Lägg till alla filer:
Skapa ett ”repository”:
git init
git add .
Lägg till alla filer:
Spara ändringarna:
git commit -m ”Beskrivning av ändring”
Skapa din Heroku-app:
heroku create
Skapa din Heroku-app:
heroku create
Ladda upp dina filer:
git push heroku master
Skapa din Heroku-app:
heroku create
Ladda upp dina filer:
git push heroku master
Uppdatera databasen på Heroku:
heroku rake db:migrate
Öppna din app!
heroku open
Fortsätt lära dig
och
Fortsätt lära dig
och
railscasts.com
API
API API
API
API
API API
API
api.rubyonrails.org
Fortsätt lära dig
och
Fortsätt lära dig
och
tryruby.org
Why the lucky stiff
från ”Why's (poignant) Guide to Ruby”
mislav.uniqpath.com/poignant-guide
API
API API
API
API
API API
API
ruby-doc.org/core
www.ruby-doc.org/docs/ProgrammingRuby
Gratis på:
?
Rails för systemvetare

More Related Content

Viewers also liked

A Systems Biology Perspective on Plant-Pathogen Interactions 2012-05-08, Turin
A Systems Biology Perspective on Plant-Pathogen Interactions 2012-05-08, TurinA Systems Biology Perspective on Plant-Pathogen Interactions 2012-05-08, Turin
A Systems Biology Perspective on Plant-Pathogen Interactions 2012-05-08, TurinLeighton Pritchard
 
N B A Collective Bargaining Presetation
N B A  Collective  Bargaining  PresetationN B A  Collective  Bargaining  Presetation
N B A Collective Bargaining Presetationdghorne
 
Comparative Genomics and Visualisation - Part 1
Comparative Genomics and Visualisation - Part 1Comparative Genomics and Visualisation - Part 1
Comparative Genomics and Visualisation - Part 1Leighton Pritchard
 
CommodityMatch, LLC Background
CommodityMatch, LLC Background CommodityMatch, LLC Background
CommodityMatch, LLC Background omnihldgs
 
The Great State of Design with CSS Grid Layout and Friends
The Great State of Design with CSS Grid Layout and FriendsThe Great State of Design with CSS Grid Layout and Friends
The Great State of Design with CSS Grid Layout and FriendsStacy Kvernmo
 

Viewers also liked (9)

Pátria
PátriaPátria
Pátria
 
A Systems Biology Perspective on Plant-Pathogen Interactions 2012-05-08, Turin
A Systems Biology Perspective on Plant-Pathogen Interactions 2012-05-08, TurinA Systems Biology Perspective on Plant-Pathogen Interactions 2012-05-08, Turin
A Systems Biology Perspective on Plant-Pathogen Interactions 2012-05-08, Turin
 
N B A Collective Bargaining Presetation
N B A  Collective  Bargaining  PresetationN B A  Collective  Bargaining  Presetation
N B A Collective Bargaining Presetation
 
Comparative Genomics and Visualisation - Part 1
Comparative Genomics and Visualisation - Part 1Comparative Genomics and Visualisation - Part 1
Comparative Genomics and Visualisation - Part 1
 
Pátria
PátriaPátria
Pátria
 
Somatosensory Tinnitus (From Past To Now)
Somatosensory Tinnitus (From Past To Now)Somatosensory Tinnitus (From Past To Now)
Somatosensory Tinnitus (From Past To Now)
 
CommodityMatch, LLC Background
CommodityMatch, LLC Background CommodityMatch, LLC Background
CommodityMatch, LLC Background
 
Work Rules!
Work Rules!Work Rules!
Work Rules!
 
The Great State of Design with CSS Grid Layout and Friends
The Great State of Design with CSS Grid Layout and FriendsThe Great State of Design with CSS Grid Layout and Friends
The Great State of Design with CSS Grid Layout and Friends
 

Similar to Rails för systemvetare

HT18 - DA354A - Bottle web app
HT18 - DA354A - Bottle web appHT18 - DA354A - Bottle web app
HT18 - DA354A - Bottle web appAnton Tibblin
 
Molntjänster som it superhjältar
Molntjänster som it superhjältarMolntjänster som it superhjältar
Molntjänster som it superhjältarPer Åström
 
HT23 - DA354A - Webbprogrammering med Python
HT23 - DA354A - Webbprogrammering med PythonHT23 - DA354A - Webbprogrammering med Python
HT23 - DA354A - Webbprogrammering med PythonAnton Tibblin
 
HT19 - DA354A - Webbprogrammering med bottle
HT19 - DA354A - Webbprogrammering med bottleHT19 - DA354A - Webbprogrammering med bottle
HT19 - DA354A - Webbprogrammering med bottleAnton Tibblin
 
HT17 - DA354A - Webbapplikation
HT17 - DA354A - WebbapplikationHT17 - DA354A - Webbapplikation
HT17 - DA354A - WebbapplikationAnton Tibblin
 
Tre sårbarheter i webbappar
Tre sårbarheter i webbapparTre sårbarheter i webbappar
Tre sårbarheter i webbapparjohnwilander
 
Webbapplikationer i WordPress - Will it blend?
Webbapplikationer i WordPress - Will it blend?Webbapplikationer i WordPress - Will it blend?
Webbapplikationer i WordPress - Will it blend?Jimmy Rosén
 

Similar to Rails för systemvetare (8)

HT18 - DA354A - Bottle web app
HT18 - DA354A - Bottle web appHT18 - DA354A - Bottle web app
HT18 - DA354A - Bottle web app
 
Molntjänster som it superhjältar
Molntjänster som it superhjältarMolntjänster som it superhjältar
Molntjänster som it superhjältar
 
HT23 - DA354A - Webbprogrammering med Python
HT23 - DA354A - Webbprogrammering med PythonHT23 - DA354A - Webbprogrammering med Python
HT23 - DA354A - Webbprogrammering med Python
 
HT19 - DA354A - Webbprogrammering med bottle
HT19 - DA354A - Webbprogrammering med bottleHT19 - DA354A - Webbprogrammering med bottle
HT19 - DA354A - Webbprogrammering med bottle
 
JavaScript + DOM
JavaScript + DOMJavaScript + DOM
JavaScript + DOM
 
HT17 - DA354A - Webbapplikation
HT17 - DA354A - WebbapplikationHT17 - DA354A - Webbapplikation
HT17 - DA354A - Webbapplikation
 
Tre sårbarheter i webbappar
Tre sårbarheter i webbapparTre sårbarheter i webbappar
Tre sårbarheter i webbappar
 
Webbapplikationer i WordPress - Will it blend?
Webbapplikationer i WordPress - Will it blend?Webbapplikationer i WordPress - Will it blend?
Webbapplikationer i WordPress - Will it blend?
 

Rails för systemvetare