Ruby on Rails voor ontwerpers

Ruby on Rails is een open-source web framework dat is geoptimaliseerd voor programmeur geluk en duurzame productiviteit. Het laat je mooie code schrijven door conventie te prefereren boven configuratie.

Dit is de manier waarop Ruby on Rails zichzelf promoot - maar in mijn woorden is het een ongelooflijk raamwerk dat je leven echt een stuk eenvoudiger kan maken. Je kunt meer leren op hun site http://rubyonrails.org

Stap 1 - Ruby on Rails installeren

Het installeren van Ruby on Rails (ook vaak afgekort tot RoR) is op de meeste systemen vrij pijnloos, maar je zult wel op je gemak moeten zijn als je de terminal opent. De Ruby on Rails downloadpagina bevat links om aan de slag te gaan, en ik zal ze hier reproduceren om u een beetje tijd te besparen. Net als een notitie, dit zijn de plaatsen om Ruby te krijgen, dat is waar Rails in geprogrammeerd is, en we zullen Rails in een minuut installeren. Raadpleeg de Ruby-site voor meer informatie over de taal

  • Ramen: One-Click Ruby Installer (ik raad aan 1.8.6-26 Final Release te gebruiken)
  • Mac OS X 10.4: Schepen met kapotte Ruby maar je kunt de geweldige gids van Dan Benjamin volgen
  • Mac OS X 10.5: Als u de Developer Tools van Apple installeert, wordt u ingesteld. Probeer uw installatieschijven of de ontwikkelaarssite van Apple en download Xcode
  • Linux: Hoewel dit voor elke distributie kan verschillen, moet u robijn, irb en rdoc installeren

Nu we Ruby hebben gedownload, moet je ervoor zorgen dat je RubyGems hebt, wat een pakketbeheerder is voor Ruby.

Om te testen of je RubyGems hebt, voer je het volgende in terminal uit:

gem -v

Op dit moment is 1.3.2 de nieuwste versie. Als u wilt updaten als u niet over de nieuwste versie beschikt, voert u het volgende uit en als u op een Mac werkt, plaatst u sudo op de voorgrond.

edelsteen update - systeem

Volg deze stappen als u RubyGems niet zult gebruiken:

  1. Download hier de nieuwste uitgave van RubyGems.
  2. Pak het pakket uit
  3. Ga naar de directory in je terminal (cd is de opdracht)
  4. Voer dit uit in de terminal: ruby ​​setup.rb (voeg sudo toe voor de opdracht voor Linux- en Mac OS X-gebruikers, u zult ook moeten doorgaan met die voor alle gem install-opdrachten)

Als je een Linux-systeem hebt, zou je RubyGems moeten kunnen installeren via je pakketbeheerder, maar ik geef de voorkeur aan de bovenstaande methode. Als u nog meer problemen ondervindt, raadpleegt u de installatiedocumentatie op de RubyGems-site.

Rails installeren

Nu we de nieuwste versie van RubyGems hebben, laten we Rails installeren:

gem installeren rails

Het duurt een paar minuten om Rails en al zijn 'dependancies' te installeren.

Stap 2 - Een applicatie maken

Dus nu we Ruby, RubyGems en Rails hebben geïnstalleerd, laten we een project maken! Als u een nieuw project wilt maken, gebruikt u de opdracht Rails om nieuwe projecten te maken. We zullen een eenvoudig project met de naam 'blog' maken. Notitie: Hiermee wordt de app-map gemaakt in de huidige map waarin u zich in de terminal bevindt. Zorg er dus voor dat u naar de map gaat waar u de app wilt opslaan..

rails blog

Je zou zoiets voorbij moeten zien vliegen:

Open vervolgens het project in uw favoriete teksteditor / IDE. Ik ben persoonlijk dol op TextMate, - alleen voor Mac OS X zijn er enkele geweldige klonen die ook beschikbaar zijn.

Mapstructuur

De mappenstructuur van een Ruby on Rails ziet er ongeveer als volgt uit:

Er zijn drie mappen die elke ontwikkelaar of ontwerper dagelijks moet gebruiken: de app-, configuratie- en openbare mappen. Bekijk de korte uitleg voor elk van de mappen:

  • app: Dit is waar de logica van uw toepassing leeft.
    • controllers: Dit is waar Rails naar de controllerklassen zoekt. Kortom, deze ontvangen de verzoeken.
    • helpers: Helpers leven in deze directory en helpen de controllers, modellen en views
    • modellen: Elk van deze vormt in feite een tabel in de database, dus het vinden van informatie en het instellen van uw toepassing is doodeenvoudig
    • keer bekeken: wat de gebruiker ziet
      • lay-outs: dit zijn elk van de lay-outs die u een controller kunt definiëren om te gebruiken. Maakt het maken van sjablonen heel gemakkelijk.
      • alle andere: In onze applicatie die we momenteel nog niet hebben, vertegenwoordigt elk van de andere mappen die zich in deze map bevinden, en verwijst dit terug naar de controllers, en de bestanden die hier aanwezig zijn komen overeen met de acties in de controller
  • config: Deze map bevat alle instellingen van je app. Sommige specifieke bestanden:
    • database.yml: Dit bestand bevat uw database-instellingen
    • environment.rb: Dit bestand bevat de Rails-instellingen voor uw toepassing
    • environements /: Deze map bevat de configuratie-instellingen voor elk van de specifieke omgevingen: ontwikkeling, testen en productie
    • routes.rb: Dit bestand bevat de instellingen voor het URL-schema, evenals de specifieke URL en waar de verzoeken naartoe moeten worden verzonden
  • db: Deze map zal uiteindelijk uw database bevatten (als u sqllite gebruikt), uw databaseschema en al uw databasemigraties (wijzigingen in de structuur)
  • doc: Deze map bevat alle documentatie die is gegenereerd door rake doc: app
  • lib: De bestanden hierin bevatten toepassingsspecifieke code die niet in uw controllers thuishoort.
  • log: Rails slaat de boomstammen hier op, vier. Eén voor serverspecifieke dingen in server.log en één voor elke omgeving.
  • openbaar: Deze map bevat alle bestanden die niet zo veel veranderen. Rails zoekt naar bestanden voordat ze probeert naar een controller te gaan. Javascripts worden opgeslagen in de map javascripts, afbeeldingen in de map met afbeeldingen en stylesheets in de map met stijlbladen. Statische bestanden zoals robots.txt en andere html-bestanden kunnen hier ook worden opgeslagen. Zorg ervoor dat u het index.html-bestand verwijdert, want dat wordt weergegeven in plaats van wat u zoekt!
  • script: Deze scripts maken uw leven een stuk eenvoudiger. Het serverscript start de ontwikkelingswebserver en genereren genereert code.
  • test: De tests die u schrijft en die Rails voor u maakt, worden hier allemaal opgeslagen.
  • TMP: Rails slaat hier tijdelijke bestanden op.
  • verkoper: Hier kunt u eventuele Rails-plug-ins (of bibliotheken) van derden installeren die niet standaard zijn met de Rails-distributie.

Stap 3 - Je handen vuil krijgen

Hoewel het doel van deze tutorial niet is om een ​​applicatie te maken, zullen we nog steeds een beetje programmeren. Laten we eerst een controller met de naam artikelen maken: (zorg ervoor dat u bent overgeschakeld naar de root van de Rails-applicatie)

script / regelartikel genereren

Open nu het bestand en u zou dit moeten zien:

class ArticlesController < ApplicationController end 

Al deze code zegt dat we een nieuwe klasse definiëren, genaamd ArticlesController, die erft van een andere klasse genaamd ApplicationController. Nu gaan we een actie maken (waarnaar verwezen wordt als een strikt gesproken in Ruby) naam-index, dus als je naar http: // localhost: 3000 / articles / gaat, wordt er iets getoond. Wijzig uw code zodat deze eruit ziet:

class ArticlesController < ApplicationController def index end end

Dus nu dat we een actie hebben, ga dan naar de map app / views. We gaan een weergave maken, dus wanneer een gebruiker die URL opvraagt, zien ze daadwerkelijk iets. Het is je misschien opgevallen dat er een nieuwe map in deze benoemde artikelen staat; deze map is gemaakt toen we de controller genereerden. Maak dus een nieuw bestand in de map articles met de naam index.html.erb. Je kunt je afvragen wat het einde is, de html verwijst naar het type bestand en de erb verwijst naar de ingesloten Ruby als template-engine. Persoonlijk geef ik de voorkeur aan rhtml omdat het een enkel einde is, maar dat wordt afgeschreven in Rails 3, die deze zomer zal worden vrijgegeven bij RailsConf. Plaats dit in je nieuwe bestand:

De tijd is nu <%= Time.now %>

De tags & lt% =%> kunnen u intrigeren. Deze tag is zo bedoeld dat Ruby de resultaten van de ingesloten Ruby-code gebruikt. Dus deze code zal de tijd nu afdrukken. De andere tag die u in Rails gaat gebruiken, is eenvoudig <%- -%>. Deze tag is bedoeld voor Ruby-code die eigenlijk niets uitvoert, zoals bij het herhalen van items in een array.

Nu gaan we een lay-out maken om deze tekst mooi te maken. Dus maak een bestand aan in de views / layouts-map met de naam application.html.erb met daarin het volgende:

   <%= h(@title) %> <%= stylesheet_link_tag 'application' %> <%= javascript_include_tag 'prototype' %> <%= yield(:head) %>   
<%- flash.each do |name, msg| -%> <%= content_tag :div, msg, :id => "flash _ # name"%> <%- end -%> <%= yield %>

Ten eerste wil ik, voordat ik de code uitleg, willen weten waarom we het bestand application.html.erb hebben genoemd. Rails laadt deze lay-out automatisch elke keer tenzij anders aangegeven. Als je deze lay-out "lay-out" had genoemd, dan had je lay-out moeten toevoegen: lay-out naar de bovenkant van de controller. Dit codeblok bevat enkele belangrijke weetjes die u wilt weten voor wanneer u lay-outs aan het ontwikkelen bent.

  • <%= stylesheet_link_tag 'application' %>: Deze tag genereert de CSS-insluitingstag voor het CSS-bestand met de naam application.css
  • <%= javascript_include_tag 'prototype' %>: Deze tag genereert de JavaScript-invoegtoepassing voor de javascriptbibliotheek Prototype. Prototype is de standaard javascript-bibliotheek die wordt geleverd met Rails. Je kunt ook plaatsen: standaard (niet in enkele aanhalingstekens) in plaats van alleen prototype en Rails laadt alle standaardwaarden, alle laden alle bestanden in de map public / javascripts.
  • <%- flash.each do |name, msg| -%>: Deze code en de code in het blok betekent dat voor elk item in de flash-array een bericht wordt weergegeven voor de gebruiker.
  • <%= yield %>: Dit voert alle informatie uit de individuele weergave uit, en geeft de uitvoer binnen de sjabloon door en stuurt deze naar de gebruiker.

Laten we nu een snel CSS-bestand maken met de naam application.css in public / stylesheets en het volgende erin zetten:

body achtergrondkleur: # 111; lettertype-familie: Verdana, Helvetica, Arial; lettergrootte: 14 px;  #container width: 75%; marge: 0 auto; achtergrondkleur: #FFF; opvulling: 10px; rand: vast 5px # 999; margin-top: 20px; 

Nu hebben we een heel eenvoudige toepassing voor het weergeven van de huidige tijd; hopelijk zou je meer vertrouwd moeten zijn met de basis van Rails.

Stap 4 - Afmaken

U denkt misschien: "Dit is cool en zo, maar hoe zie ik het eindproduct?" Er is een terminalopdracht die u moet uitvoeren terwijl u zich in de basis van de Rails-toepassing bevindt om de lokale ontwikkelingsserver te starten. script / server start de server, normaal op poort 3000. Voer de opdracht uit en wijs uw browser naar http://127.0.0.1:3000/articles. Je zou het volgende moeten zien:

Om de server te stoppen, selecteert u het terminalvenster en Control-C. Dit zal de ontwikkelserver stoppen. Zorg er als een noot voor dat u nooit een productieserver op deze manier uitvoert.

Er is nog een laatste ding dat ik je graag wil laten zien. Zoals ik al eerder zei, het config / routes.rb-bestand bepaalt waar verzoeken naartoe gaan. Open het bestand; we gaan het zo maken als je naar http://127.0.0.1.13000/ gaat, zie je hetzelfde als voorheen. Zoek de regel, "# U kunt de hoofdmap van uw site laten routeren met map.root - onthoud dat u public / index.html verwijdert." Voeg onder dat gedeelte het volgende toe:

map.root: controller => "artikelen"

Sla het bestand op en zorg ervoor dat u de webserver opnieuw opstart. U moet de server altijd opnieuw opstarten telkens wanneer u een nieuw model maakt en andere andere bestanden die Rails in het geheugen opslaan, wijzigen om de server te versnellen. Zorg ervoor dat u public / index.html verwijdert, of hernoem het gewoon. Zorg er nu voor dat de server is gestart en ga naar http://127.0.0.1:3000. Je zou hetzelfde moeten zien.

Conclusie

Dus nu zou je wat meer vertrouwd moeten zijn met Ruby on Rails. Ik heb ook een paar geweldige sites gelinkt om naar te verwijzen bij het ontwikkelen met Rails. Veel plezier met coderen met Rails!

  • Railscasts opgezet door Ryan Bates is een geweldige bron van video tutorials, en je kunt altijd iets geweldigs verwachten.
  • De Rails API is een geweldige manier om meer informatie te vinden over een onderwerp waar u misschien niet helemaal zeker van bent.

Volg ons op Twitter voor meer dagelijkse webontwikkelingen, tuts en artikelen.