Rails för systemvetare

Post on 12-Jun-2015

315 views 0 download

description

En presentation jag höll om HTML, Ruby och Ruby on Rails för medstudenter på IT-universitetet i Göteborg under våren 2

transcript

...

...

Ruby on Rails

...en introduktion

Ruby on Rails

...en introduktion

Vem är jag?

Victor Sollerhed

@MPV3

Ruby

Java

HTML

CSS

PHP

C++

ASP VBscriptJavascript

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 uppgifterom 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?

HTMLDo 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>

<a>Annan sida</a>

<a >Annan sida</a>

<a href=” ”>Annan sida</a>

<a href=”anotherpage.htm”>Annan sida</a>

Annan sida

Dagenssidotips:

Vad är Ruby?

Japan1994

...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 Duckdef initialize

puts ”Quack!”end

end

class Duckdef initialize

puts ”Quack!”end

end

d = Duck.new

class Duckdef 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 Repeat Yourself

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 ControllerMember.rb index.html.erb MembersController.rb

show.html.erb

edit.html.erb

new.html.erb

Hur fungerarMVC 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

RESTSOAP

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

APIAPI API

API

APIAPI API

API

api.rubyonrails.org

Fortsätt lära dig

och

Fortsätt lära dig

och

tryruby.org

Why the lucky stiff

mislav.uniqpath.com/poignant-guide

APIAPI API

API

APIAPI API

API

ruby-doc.org/core

www.ruby-doc.org/docs/ProgrammingRuby

Gratis på:

?