Ruby op rails

Van Wikipedia, de gratis encyclopedie
Spring naar navigatie Spring naar zoeken
Ruby op rails

Ruby on Rails logo.jpg
Rails standaard index.png
Rails standaard pagina
Basis data

ontwikkelaar Kernteam Sporen [1]
Jaar van uitgave 25 juli 2004
Huidige versie 6.1.4[2]
( 24 juni 2021 )
besturingssysteem platformonafhankelijk
programmeertaal Robijn
categorie Webframework
Licentie MIT-licentie
rubyonrails.org

Ruby on Rails, kortweg Rails, voorheen ook vaak kort RoR, is een origineel van David Heine Meier Hansson in de programmeertaal Ruby geschreven en open source web framework . Het werd in juli 2004 voor het eerst aan het publiek gepresenteerd.

Rails kenmerkt zich door de principes “ don’t repeat yourself ” (DRY) en “ convention before configuration ”: Dit betekent dat in plaats van een variabele configuratie conventies voor de naamgeving van objecten moeten worden nageleefd, waaruit hun interactie automatisch voortvloeit . Met deze functies kunnen eisen snel worden geïmplementeerd.

concept

Rails volgt de " Model View Controller " architectuur (MVC) en bestaat uit vijf modules:

Actieve ondersteuning
Ruby-extensies van Rails
Actieve opname
Objectabstractielaag gebaseerd op het object-relationele patroon of model (ORM) (de "M" van MVC) door Martin Fowler
Actiepakket
Verzoekafhandeling en responsoutput. De verzoeken worden afgehandeld door een openbare methode van de controller (Action Controller, de "C" van MVC). De uitvoer wordt uitgevoerd met behulp van een sjabloon (Action View, de "V" van MVC).
Actiemailer
E- mails verzenden en ontvangen
Actieve bron
Met versie 2.0 is Action Webservice vervangen door Active Resource: Webservice programmeren, ondersteuning voor XML-RPC en REST .

Rails integreert de JavaScript- frameworks Prototype en Script.aculo.us en biedt daarmee methoden voor het eenvoudig ontwikkelen van Ajax- applicaties.

verhaal

Versie 1.0

Rails is oorspronkelijk ontwikkeld voor de webgebaseerde projectmanagementsoftware Basecamp , maar is er vervolgens uit gehaald en in juli 2004 voor het eerst aan het publiek gepresenteerd. Versie 1.0 werd voltooid op 13 december 2005.

Versie 1.1

Versie 1.1 volgde op 28 maart 2006. Ze waren vooral nieuw

  • RJS ( Ruby on Rails JavaScript Templates ), die het mogelijk maakte om sjablonen voor JavaScript te maken, evenals
  • Verbeteringen aan ActiveRecord, die onder andere het gebruik van polymorfe associaties mogelijk maken.
  • Daarnaast zijn de prestaties verbeterd. [3]

Versie 1.2

Versie 1.2 werd uitgebracht op 19 januari 2007. De hoogtepunten van versie 1.2 waren vooral

  • RUST ,
  • Routing volgens MIME- type en
  • een interface voor het veilig omgaan met UTF-8- strings.

Daarnaast is een handvol methoden gemarkeerd als verouderd . Deze gaven vervolgens waarschuwingen en er werd aangekondigd dat ze in de volgende grote release - versie 2.0 - van Rails zouden worden verwijderd. [4]

Versie 2.0

Op 7 december 2007 werd Rails 2.0 uitgebracht na bijna een jaar ontwikkelingswerk. [5] Het bracht enkele honderden innovaties met zich mee en voerde de conversie uit van SOAP naar REST als platform voor webservices . [6]

Versie 2.1

Versie 2.1 werd uitgebracht op 1 juni 2008, wat enkele verbeteringen en innovaties met zich meebracht:

  • Behandeling van tijdzones geoptimaliseerd
  • Maakt het mogelijk om de toepassing van afhankelijkheden op RubyGems te definiëren en kan wijzigingen in modellen volgen, wat ook de databasetoegang efficiënter maakt.
  • Benoemde bereiken geïntroduceerd waarmee queries met vaak vereiste voorwaarden kunnen worden gedefinieerd.
  • Migraties zijn gewijzigd zodat ze niet meer genummerd zijn, maar een tijdstempel krijgen . De eerdere afhandeling leidde bij het ontwikkelen in teams tot problemen als twee ontwikkelaars tegelijkertijd een nieuwe migratie aanmaakten, die dan hetzelfde nummer kreeg. [7]

Versie 2.2

Versie 2.2 werd uitgebracht op 21 november 2008. Het bracht onder andere het volgende:

  • Internationalisering: Door de integratie van de l18n- Gems is er nu een standaard API beschikbaar voor internationalisering.
  • Vanaf deze versie is Rails compatibel met Ruby 1.9 en JRuby
  • Ondersteunt etag en last-modified in HTTP-headers. Pagina's die sinds het laatste bezoek niet zijn gewijzigd, hoeven niet opnieuw te worden verzonden.
  • Draad veiligheid

Versie 2.3

Versie 2.3 werd uitgebracht op 15 maart 2009. Naast vele kleinere verbeteringen bevatte het zogenaamde sjablonen . Deze worden gebruikt om configuraties te genereren die steeds opnieuw nodig zijn, direct bij het maken van de applicatie. De engines maakten het mogelijk om applicaties zoals plugins in te bedden in andere Rails applicaties. Geneste formulieren maken het nu eenvoudig om gedefinieerde afhankelijkheden tussen modellen in de weergave in kaart te brengen. Vanaf deze versie is Rails gebaseerd op het Middleware Rack en geeft het daarom directe toegang. Met Rails Metal werd het mogelijk om applicatieonderdelen die heel vaak worden aangeroepen en alleen eenvoudige functionaliteit bieden, te versnellen. Daarbij doet de ontwikkelaar afstand van het meeste gemak dat Rails anders zou bieden.

Versie 3.0

Rails 3.0 werd uitgebracht op 29 augustus 2010. In deze versie is Rails samengevoegd met het tweede grote Ruby webframework Merb . [9] Daarnaast is Rails modulair ontworpen. Enerzijds moet dit het gemakkelijker maken om delen van rails (bijvoorbeeld ActiveRecord) buiten rails te gebruiken. Tegelijkertijd is het nu gemakkelijker om bepaalde onderdelen van Rails desgewenst te vervangen door andere bibliotheken . Verder is de Javascript-ondersteuning overgeschakeld naar Unobtrusive JavaScript .

Versie 3.1

Een eerste update van Rails 3 werd uitgebracht op 31 augustus 2011. [10] In deze versie is de asset-pipeline geïntroduceerd, waarmee alle CSS- en Javascript-bestanden voor aflevering worden gecombineerd en gecomprimeerd tot één bestand. Dit zou de snelheid moeten verbeteren. Aan de voorkant wordt Sass sinds 3.1 gebruikt als een JavaScript- preprocessor voor de ontwikkeling van stylesheets en CoffeeScript . Sindsdien is de standaardbibliotheek voor JavaScript niet langer Prototype , maar jQuery . [11]

Versie 3.2

Versie 3.2 werd uitgebracht op 20 januari 2012. [12] Onder andere de prestaties van de ontwikkelmodus zijn verbeterd.

Versie 4.0

Versie 4.0 werd uitgebracht op 25 juni 2013. [13]

Versie 4.1

Versie 4.1.0 werd uitgebracht op 8 april 2014. [14]

Versie 4.2

Versie 4.2.0 werd uitgebracht op 19 december 2014. [15]

Versie 5.0

Versie 5.0 werd uitgebracht op 30 juni 2016. De belangrijkste innovaties zijn de integratie van Action Cable , een WebSocket- implementatie in Ruby, generatoren voor lean web-API's en een speciaal testraamwerk genaamd Test Runner . [16]

Versie 5.1

Versie 5.1 werd uitgebracht op 27 april 2017. De belangrijkste nieuwe functies zijn ondersteuning voor Yarn , een pakketbeheerder voor Javascript-afhankelijkheden, en Webpack , een activabundel voor JavaScript. Verder zijn de methoden voor het genereren van webformulieren ( form_for , form_tag ) gestandaardiseerd (naar form_with ), zijn tests met webbrowsers ( Capybara ) geïntegreerd en is JQuery als verplichte afhankelijkheid verwijderd. [17]

Versie 5.2

Versie 5.2.0 werd uitgebracht op 9 april 2018. [18]

Versie 6.0

Versie 6.0.0 is uitgebracht op 15 augustus 2019. Nieuwe features in deze versie zijn Webpack als standaard voor JavaScript, Action Mailbox, Action Text, parallel testen, ondersteuning voor meerdere databases en een nieuwe autoloader. [19]

Versie 6.1

Versie 6.1.0 is uitgebracht op 9 december 2020. Belangrijke innovaties zijn de ondersteuning van horizontale fragmentatie en de mogelijkheid om de databaseverbinding individueel te wijzigen. [20]

filosofie

Als basisprincipes van Rails zijn "Do not repeat yourself" (Repeat you not) en "Convention over configuration" (conventie boven configuratie).

"Herhaal jezelf niet"
Elk stukje informatie zou maar één keer beschikbaar moeten zijn. In Rails is het bijvoorbeeld dankzij ActiveRecord voldoende om de kolommen van een tabel alleen in de database te definiëren. In plaats van deze informatie een tweede keer op te vragen in de broncode of een configuratiebestand, leest ActiveRecord deze informatie rechtstreeks uit de database. Rails maakt automatisch getter- en setter-methoden voor het model, zodat de gegevens gemakkelijk kunnen worden geschreven naar en gelezen uit de database. Deze methode heeft ook het voordeel dat de informatie niet inconsistent kan worden als bijvoorbeeld de database is gewijzigd maar dit is vergeten voor het configuratiebestand.
"Conventie over configuratie"
Rails verwacht redelijke standaardwaarden. Er wordt bijvoorbeeld verwacht dat de primaire sleutel van een tabel van het type Integer en de naam ID , dat een model met de naam Customer wordt opgeslagen in het bestand #{Rails.root}/app/models/customer.rb en de bijbehorende tabel wordt customers . Als dit model via een 1:N-relatie aan een Contract is gekoppeld, is de verwachting dat er een refererende sleutel met de naam customer_id beschikbaar is in de contracts . Als deze standaardwaarden niet van toepassing zijn, kunnen ze eenvoudig opnieuw worden geconfigureerd, maar in de meeste gevallen blijft de ontwikkelaar de uitgebreide configuratie-opties bespaard.

Steiger

De ingebouwde steigers maakt het mogelijk om webapplicaties on the fly te ontwikkelen. Als er bijvoorbeeld een veld aan de database wordt toegevoegd, verschijnt deze direct in de bijbehorende View / New / Edit view. De mogelijkheid van directe visualisatie van een database veld en de koppeling van verschillende database operaties met dit zeer tekstveld wordt vaak aangeduid met de term CRUD (C reate, R EAD U pdate, D elete) of CRUD raamwerk. Scaffolding is primair bedoeld voor prototyping en wordt in productieve applicaties vrijwel altijd aangevuld met eigen code.

Ondersteuning voor webserver

De WEBrick webserver behorende bij het Ruby pakket is ideaal als applicatieserver voor ontwikkeling en testen. Voor productief gebruik z. B. Apache of Lighttpd kan worden gebruikt met FastCGI , maar elke andere webserver met CGI- of FastCGI-ondersteuning werkt ook. Een andere mogelijkheid is de Mongrel -webserver, meestal geschreven in Ruby, die, in tegenstelling tot WEBrick, geschikt is voor productief gebruik. De Apache-module mod ruby wordt over het algemeen niet aanbevolen; in plaats daarvan wordt Phusion Passenger (ook bekend als mod_rails) aanbevolen. Dit is niet alleen bijzonder snel en onderhoudsarm, in tegenstelling tot alle andere genoemde servers is het ook niet nodig om de webserver opnieuw op te starten wanneer een applicatie opnieuw wordt geactiveerd. Dit is vooral belangrijk bij shared hosting .

lagen

Model

De back-end van een Rails-toepassing is normaal gesproken een relationele database . De toegang hiertoe wordt tot stand gebracht met behulp van ActiveRecord. Dit is een ORM-laag die een klasse toewijst aan een tabel en een attribuut aan een kolom. Een datarecord in zo'n tabel komt overeen met precies één instantie. Een aantal bekende databases zoals SQLite , Db2 , Informix , MySQL , Oracle , PostgreSQL , MongoDB , Microsoft SQL Server en Sybase worden momenteel ondersteund.

Het is ook mogelijk om een ​​ander formaat te gebruiken (bijvoorbeeld XML-bestanden) of om helemaal geen backend te hebben. Dankzij de plug-in API die in Rails 3.0 is geïntroduceerd, kun je vrij de ORM-bibliotheek kiezen, zodat naast ActiveRecord ook Sequel en Datamapper , die al door veel Merb- applicaties worden gebruikt, beschikbaar zijn.

Controller

De besturingslaag van een Rails-toepassing wordt gemaakt met behulp van de klasse ActionController. Dit maakt deel uit van de ActionPack-bibliotheek. Een controller hult een bepaalde bedrijfslogica in en biedt interfaces om er gecontroleerd mee te interageren. Deze interfaces worden acties genoemd. Een gemeenschappelijk Rails-verzoek (bijv. URL : //servername.net/controller/action ) bevat de naam van de controller die moet worden geadresseerd. Dit is gelijk aan de klassenaam. Een speciale actie wordt ook wel genoemd; deze wordt weergegeven als een methode binnen de controllerklasse. Het ingebouwde routeringsmechanisme stelt u echter in staat een dergelijk Rails-verzoek aan uw eigen behoeften aan te passen.

Weergave

De klasse ActionView is verantwoordelijk voor de presentatielaag. Dit maakt ook deel uit van de ActionPack-bibliotheek. De volgende uitvoerformaten worden momenteel ondersteund door Rails:

De volgende sjabloonsystemen worden ook aangeboden:

Het is ook mogelijk om zelf de HTTP- header te manipuleren en zo andere formaten naar de client te sturen.

Middleware rek

Merb , Sinatra , Ramaze en Camping zijn net als Rails ook Ruby frameworks die gebruik maken van het middleware rack en dus ook te mixen zijn. Vanaf Rails versie 3 zijn Rails en Merb samengevoegd.

literatuur

web links

Wikibooks: zelfstudie en naslagwerk - leer- en lesmateriaal

Individueel bewijs

  1. rubyonrails.org/core ( Aandenken aan het origineel van 5 december 2012 in het webarchief archive.today ) Info: De archieflink is automatisch ingevoegd en is nog niet gecontroleerd. Controleer de originele en archieflink volgens de instructies en verwijder deze melding. @ 1 @ 2 Sjabloon: Webachiv / IABot / www.rubyonrails.org - Ruby-Core-Team
  2. github.com.
  3. Rijrails : Rails 1.1: RJS, Active Record ++, respond_to, integratietests en 500 andere dingen! Gearchiveerd van het origineel op 5 augustus 2010 ; geraadpleegd op 6 oktober 2012 .
  4. Rijrails : Rails 1.2: REST-bewondering, HTTP-liefdesfeest en UTF-8-vieringen. Gearchiveerd van het origineel op 12 juni 2011 ; geraadpleegd op 6 oktober 2012 .
  5. Rails 2.0: het is klaar! Ontvangen 6 oktober 2012 .
  6. Jo Bager: Ruby on Rails 2.0 webapplicatieomgeving is klaar. Ontvangen 6 oktober 2012 .
  7. Rijrails: Rails 2.1: Tijdzones, vuil, caching, afhankelijkheden van edelstenen, caching, enz. Gearchiveerd van het origineel op 12 juni 2011 ; geraadpleegd op 6 oktober 2012 .
  8. Rijrails: Rails 3.0: hij is klaar. Ontvangen 12 april 2012 .
  9. Rails Weblog: Merb wordt samengevoegd in Rails 3! Ontvangen 6 oktober 2012 .
  10. Rijrails: Rails 3.1.0 is uitgebracht! 31 augustus 2011, geraadpleegd op 12 april 2012 .
  11. Morsy en Otto 2012: Ruby on Rails 3.1, blz. 28
  12. Rijrails: Rails 3.2.0: Snellere dev-modus en routering, query's uitleggen, logger getagd, opslaan. 20 januari 2012, geraadpleegd op 12 april 2012 .
  13. Release-opmerkingen: Rijrails: Rails 4.0: definitieve versie vrijgegeven! 25 juni 2013, geraadpleegd op 25 juli 2013 .
  14. Release-opmerkingen: Rails 4.1.0: Spring, Variants, Enums, Mailer-previews, secrets.yml. 8 april 2014, geraadpleegd op 5 augustus 2014 .
  15. Release-opmerkingen: Rails 4.2: actieve taak, asynchrone e-mails, voldoende record, webconsole, externe sleutels. 19 december 2014, geraadpleegd op 21 december 2014 .
  16. Release-opmerkingen: Ruby on Rails 5.0 release-opmerkingen. Ontvangen 19 juli 2016 .
  17. Release-opmerkingen: Ruby on Rails 5.1 release-opmerkingen. Geraadpleegd op 31 januari 2018 .
  18. Release-opmerkingen: Rails 5.2.0 FINAL. 9 april 2018, geraadpleegd op 3 augustus 2018 .
  19. Release-opmerkingen: Rails 6.0 definitieve release. 15 augustus 2019, geraadpleegd op 21 maart 2020 .
  20. Release-opmerkingen: Ruby on Rails 6.1 Release-opmerkingen. 9 december 2020, geraadpleegd op 29 mei 2021 .