Qu'est-ce que Ruby on Rails?

Crédits image: RubyonRails.org

Un cadre de développement Web pour les puristes

Dès 1995, Yukihiro Matsumoto a publié Ruby 0.95 en tant que langage de programmation pur, orienté objet (OO) et polyvalent:

Maniaque de la langue et fan de OO depuis 15 ans, je voulais vraiment un véritable langage de script orienté objet et facile à utiliser. J'ai cherché mais je n'ai pas pu en trouver un. Alors j'ai décidé de le faire. - Y. Matsumoto

Puis, en 2004, David Heinemeier Hansson a publié la première version de Ruby on Rails sous la forme d’un framework d’applications Web lui permettant de lancer son application de gestion d’équipe Basecamp. Il a ouvert Ruby on Rails en 2005, et Apple l’a publié avec OS X Leopard en 2007..

Pour ce tutoriel, je ferai référence à Ruby on Rails en tant que Rails; certaines personnes utilisent aussi RoR.

Rails est utilisé par une grande variété d'applications Web populaires, telles que GitHub, Shopify, Airbnb, Twitch, SoundCloud, Hulu, Zendesk, Square et Highrise. Cependant, des limitations en matière d'évolutivité ont été critiquées, notamment avec Twitter, qui a progressivement dû transférer bon nombre de ses services sur d'autres plates-formes. Cela dit, Twitter présente des taux de transaction élevés et des problèmes d’évolutivité..

Dans ce tutoriel, je répondrai à la question "Qu'est-ce que Ruby on Rails?" et vous présenter les bases du cadre de programmation pour vous aider à l'expérimenter.

Avant de commencer, rappelez-vous, je participe aux discussions ci-dessous. Si vous avez une question ou une suggestion de sujet, veuillez poster un commentaire ci-dessous ou contactez-moi sur Twitter @reifman. 

Qu'est-ce que Ruby on Rails??

Ruby on Rails est un framework de développement Web populaire, open source et orienté objet, utilisé par de nombreux programmeurs et fournisseurs d'applications. Il est également basé sur une approche de contrôleur de vue de modèle (MVC).

Les modèles sont mappés sur les bases de données et les fonctionnalités sur un objet de l'application, tels que les utilisateurs. Rails fournit une convention standard pour la dénomination et les structures de répertoires de fichiers, ce qui simplifie la programmation mais fournit également des solutions automatisées pour la création de fonctionnalités, appelées échafaudages. Cela garantit également un environnement commun permettant aux développeurs de travailler ensemble et de tirer profit des efforts des autres..

Optimiser pour le bonheur des programmeurs avec Convention over Configuration, voilà comment nous roulons.

Le contrôleur gère les demandes principalement entre l'utilisateur et le serveur, en recueillant les données des modèles et en les renvoyant à l'utilisateur via les fichiers de vue..

Les vues sont essentiellement des fichiers HTML de programmation qui présentent la page avec les données dynamiques..

Les conventions Rails incitent les développeurs à utiliser le routage RESTful. Actions du contrôleur en général, par exemple nouveau, créer, éditer, mettre à jour, détruire, afficher, indexer, etc. C’est ce qui permet aux utilisateurs et au système d’interagir avec diverses fonctionnalités

Ensemble, les fonctionnalités MVC de Rails sont appelées Action Pack, c'est-à-dire ActionController, ActionView et ActiveRecord, ce dernier permettant d'interagir avec la base de données..

Le fondateur de Rails, Hansson, fournit une théologie fondée sur des principes derrière le cadre appelé La doctrine Ruby on Rails.

La doctrine Ruby on Rails

La doctrine Rails comprend huit principes:

  1. Optimiser pour le bonheur du programmeur: dans la mesure du possible, Ruby tente de répondre aux désirs du programmeur.
  2. Convention over Configuration: choisir des options standard par défaut pour l'ensemble de la plate-forme permet aux programmeurs de démarrer plus facilement sur de nouveaux projets.
  3. Le menu est omakase: l'équipe derrière Ruby on Rails a sélectionné les meilleurs outils et approches, et tout le monde sera plus heureux de les utiliser.
  4. Pas un paradigme: à la fin, Rails adopte des solutions flexibles pour diverses occasions.
  5. Exalt Beautiful Code: un accent principal sur l'esthétique et la simplicité.
  6. Systèmes intégrés à valeur ajoutée: orientation vers la prise de conscience complète et la cohésion de tous les outils nécessaires à la création d'applications et de solutions.
  7. Progrès sur la stabilité: volonté de prendre des risques pour faire avancer la plate-forme.
  8. Monter une grande tente: accueillir une grande communauté de participants et leurs voix pour définir la vision.
L’accomplissement principal de Rails a été de réunir et de former une tribu forte autour d’un large éventail de réflexions hérétiques sur la nature de la programmation et des programmeurs. - David Heinemeier Hansson

Voici les principaux contributeurs de Rails (le fondateur, David Hansson, est en haut à gauche):

Et ils ont une communauté chaleureuse et accueillante:

  • La liste de diffusion Ruby on Rails: Talk
  • Le tag Ruby on Rails StackOverflow Q & A
  • Le canal IRC #rubyonrails sur irc.freenode.net
  • Une conférence annuelle RailsConf pour des rencontres réelles

Peut-être que vous êtes intéressé à plonger plus loin, alors voici comment commencer.

Débuter avec Ruby on Rails

Rails possède une collection de documents exceptionnels. Voici un aperçu du Guide de démarrage:

Le guide vous guide à travers une introduction générale, une installation de base et une programmation Rails pour débutants.

Installation de Ruby on Rails

Les utilisateurs de Mac trouveront Ruby pré-installé. Les utilisateurs Windows peuvent consulter RailsInstaller. Pour une installation complète de Rails sous OS X, le guide recommande Tokaido. Daniel Kehoe suggère également d'éviter les installateurs en un clic et fournit des instructions détaillées pour l'installation de Mac OS X El Capitan..

Les développeurs expérimentés de Rails ont également déclaré que le développement d'applications Web était plus amusant. - Guide Rails

Cependant, cela faisait longtemps que je n'exécutais pas Rails, et le réinstaller sur mon dernier Mac sous El Capitan prenait beaucoup de temps..

Vérifier l'installation de Ruby

Sur OS X, Ruby sera pré-installé:

$ ruby ​​-v ruby ​​2.0.0p645 (2015-04-13 révision 50299) [universal.x86_64-darwin15]

Installer le framework Rails

L'installation de My Rails a pris environ 10 à 15 minutes (soyez patient):

$ sudo gem install rails Mot de passe: Récupération: thread_safe-0.3.5.gem (100%) thread_safe-0.3.5 installé avec succès Récupération: tzinfo-1.2.2.gem (100%) tzinfo-1.2.2 installé avec succès: Minitest -5.8.4.gem (100%) Minitest-5.8.4 Extraction installée avec succès: actifsupport-4.2.5.1.gem (100%) Actifort-4.2.5.1 installé avec succès Extraction: rack-1.6.4.gem (100%) Rack-1.6.4 installé avec succès: rack-test-0.6.3.gem (100%) Rack-test-0.6.3 installé avec succès: mini_portile2-2.0.0.gem (100%) mini_portile2-2.0 installé avec succès. 0 Récupération: nokogiri-1.6.7.2.gem (100%) Construction d'extensions natives. Cela pourrait prendre un certain temps… nokogiri-1.6.7.2 Installation réussie: loofah-2.0.3.gem (100%) Installation réussie de loofah-2.0.3 Installation: rails-html-sanitizer-1.0.3.gem (100%) Installation réussie de rails-html-sanitizer-1.0.3: rails-deprecated_sanitizer-1.0.3.gem (100%) Installation réussie de rails-deprecated_sanitizer-1.0.3: rails-dom-testing-1.0.7.gem (100 %) Rails-dom-testing-1.0.7 installés avec succès: builder-3.2.2.gem (100%) builder-3.2.2 installés avec succès: erubis-2.7.0.gem (100%) erubis installé avec succès 2.7.0 Extraction: actionview-4.2.5.1.gem (100%) Actionview-4.2.5.1 installé avec succès: Actionpack-4.2.5.1.gem (100%) Actionpack-4.2.5.1 installé avec succès Extraction: activemodel-4.2.5.1 .gem (100%) activemodel-4.2.5.1 installé avec succès: arel-6.0.3.gem (100%) installé avec succès arel-6.0.3 Recherche: activerecord-4.2.5.1.gem (100%) activé avec succès activerecord- 4.2.5.1 Extraction: globalid-0. 3.6.gem (100%) globalid-0.3.6 installé avec succès: activejob-4.2.5.1.gem (100%) actifjob-4.2.5.1 installé avec succès: mime-types-2.99.gem (100%) mime installé avec succès -types-2.99 Récupération: mail-2.6.3.gem (100%) Mail-2.6.3 installé avec succès installé: actionmailer-4.2.5.1.gem (100%) Actionmailer-4.2.5.1 installé avec succès installé: Thor-0.19. 1.gem (100%) thor-0.19.1 installé avec succès: railties-4.2.5.1.gem (100%) railties-installé avec succès-4.2.5.1 Extraction: bundler-1.11.2.gem (100%) bundler installé avec succès -1.11.2 Extraction: concurrent-ruby-1.0.0.gem (100%) concurrent-ruby-1.0.0 installé avec succès Extraction: sprockets-3.5.2.gem (100%) installation réussie de sprockets-3.5.2: sprockets-rails-3.0.1.gem (100%) sprockets-rails-3.0.1 installés avec succès: extraction: rails-4.2.5.1.gem (100%) rails-4.2.5.1 installés avec succès, analyse de la documentation de thread_safe-0.3.5 Installation de la documentation pour thread_safe-0.3.5 P arsing documentation pour tzinfo-1.2.2 Installation de la documentation ri pour tzinfo-1.2.2 Analyse de la documentation pour minitest-5.8.4 Installation de la documentation ri pour minitest-5.8.4 Analyse de la documentation pour actifsupport-4.2.5.1 incapable de convertir "\ x84" ASCII-8BIT à UTF-8 pour lib / active_support / values ​​/ unicode_tables.dat, sautant Installation de la documentation de ri pour actifsupport-4.2.5.1 Analyse de la documentation pour rack-1.6.4 Installation de la documentation de ri pour rack-1.6.4 Analyse de la documentation pour rack test-0.6.3 Installation de la documentation ri pour rack-test-0.6.3 Analyse de la documentation pour mini_portile2-2.0.0 Installation de la documentation ri pour mini_portile2-2.0.0 Analyse de la documentation pour nokogiri-1.6.7.2 incapable de convertir "\ xCA" à partir d'ASCII -8BIT en UTF-8 pour lib / nokogiri / nokogiri.bundle, saute Installation de la documentation de ri pour nokogiri-1.6.7.2 Analyse de la documentation pour loofah-2.0.3 Installation de la documentation de ri pour loofah-2.0.3 Analyse de la documentation de rails-html-sanitizer -1.0.3 Installation de la documentation ri for rails-html-sanitizer-1.0.3 Analyse de la documentation de rails-deprecated_sanitizer-1.0.3 Installation de la documentation de ri pour rails-deprecated_sanitizer-1.0.3 Analyse de la documentation de rails-dom-testing-1.0.7 Installation de la documentation de ri pour rails-dom -testing-1.0.7 Analyse de la documentation pour builder-3.2.2 Installation de la documentation ri pour builder-3.2.2 Analyse de la documentation pour erubis-2.7.0 Installation de la documentation pour erubis-2.7.0 Analyse de la documentation pour actionview-4.2.5.1 documentation pour actionview-4.2.5.1 Analyse de la documentation pour actionpack-4.2.5.1 Installation de la documentation de actionpack-4.2.5.1 Analyse de la documentation pour activemodel-4.2.5.1 Installation de la documentation de activemodel-4.2.5.1 pour l'analyse de arel-6.0.3 Installation Documentation ri pour arel-6.0.3 Documentation d'analyse pour activerecord-4.2.5.1 Installation de la documentation ri pour activerecord-4.2.5.1 Documentation d'analyse pour globalid-0.3.6 Installation de la documentation ri pour globalid-0.3.6 Analyse syntaxique Installation de activejob-4.2.5.1 Installation de la documentation ri pour activejob-4.2.5.1 Analyse de la documentation pour mime-types-2.99 Installation de la documentation ri pour mime-types-2.99 Analyse de la documentation pour mail-2.6.3 Installation de la documentation ri pour mail-2.6.3 Analyser la documentation pour actionmailer-4.2.5.1 Installer la documentation ri pour actionmailer-4.2.5.1 Analyser la documentation pour thor-0.19.1 Installer la documentation ri pour thor-0.19.1 Analyser la documentation pour rails-4.2.5.1 Installer la documentation ri pour rails-4.2. 5.1 Analyse de la documentation pour bundler-1.11.2 Installation de la documentation de ri pour bundler-1.11.2 Analyse de la documentation pour concurrent-ruby-1.0.0 Installation de la documentation de ri pour concurrent-ruby-1.0.0 Documentation de l'analyse pour sprockets-3.5.2 Installation de la documentation de ri for sprockets-3.5.2 Analyse de la documentation pour sprockets-rails-3.0.1 Installation de la documentation ri pour sprockets-rails-3.0.1 Analyse de la documentation pour rails-4.2.5.1 incapable de convertir "\ xFF" d'ASCII-8BIT en UTF-8 F ou guides / assets / images / akshaysurve.jpg, ignorant l'impossibilité de convertir "\ x89" d'ASCII-8BIT en UTF-8 pour guides / actifs / images / appartient_to.png, ignorant l'impossibilité de convertir "\ xF4" d'ASCII-8BIT vers UTF-8 pour guides / assets / images / book_icon.gif, sautant impossible de convertir "\ x91" d'ASCII-8BIT en UTF-8 pour guides / assets / images / bullet.gif, sautant… continuant encore et encore… incapable convertir "\ x80" d'ASCII-8BIT en UTF-8 pour guides / assets / images / tab_yellow.gif, impossible pour convertir "\ x89" d'ASCII-8BIT en UTF-8 pour guides / assets / images / tab_yellow. png, ignorant impossible de convertir "\ xFF" d'ASCII-8BIT en UTF-8 pour guides / assets / images / vijaydev.jpg, ignorant Installation de la documentation de ri pour rails-4.2.5.1 31 gems installés

Mais cela a fonctionné:

$ rails --version Rails 4.2.5.1 

Créez votre instance d'application et de cadre

Ensuite, j'ai créé une nouvelle application appelée blog:

$ rails nouveau blog créer créer README.rdoc créer Rakefile créer config.ru créer .gitignore créer Gemfile créer une application créer une application / assets / javascripts / application.js créer une application / assets / stylesheets / application.css créer une application / controllers / application_controller.rb créer app / helpers / application_helper.rb créer app / views / layouts / application.html.erb créer app / assets / images / .keep créer app / expéditeurs / .keep créer app / modèles / .keep créer app / controllers / préoccupations / .keep créer app / modèles / préoccupations / .keep créer bin créer / regrouper créer bin / rails créer bin / rake créer bin / configurer créer config / routes.rb créer config / application.rb créer config / environment.rb créer config / secrets.yml crée config / environnements crée config / environnements / développement.rb crée config / environnements / production.rb crée config / environnements / test.rb crée config / initialiseurs crée config / initialiseurs / assets.rb crée config / initialiseurs / backtrace_silencers.rb create config / initializers / cookies_seriali zer.rb create config / initializers / filter_parameter_logging.rb create config / initializers / inflections.rb create config / initializers / mime_types.rb create config / initializers / session_store.rb create config / initializers / wrap_parameters.rb create config / locales créer locales / en.yml créer config / boot.rb créer config / database.yml créer une base de données create db / seeds.rb créer lib créer / tâches créer lib / tasks / .keep créer lib / assets créer lib / assets / .keep créer journal créer journal / .keep créer public créer public / 404.html créer public / 422.html créer public / 500.html créer public / favicon.ico créer public / robots.txt créer test / fixtures créer test / fixtures / .keep créer test / contrôleurs créent test / contrôleurs / .keep créent test / expéditeurs créent test / expéditeurs / .keep créent test / modèles créent test / modèles / .keep créent test / assistants créent test / assistants / .keep créent test / intégration créent test / integration / .keep create test / test_helper.rb create tmp / cache crée tmp / cache / assets create vendor / assets / javascripts créer fournisseur / assets / javascripts / .keep créer fournisseur / assets / stylesheets créer fournisseur / assets / stylesheets / .keep exécuter l'installation groupée Votre compte utilisateur n'est pas autorisé à installer sur le système Rubygems. Vous pouvez annuler cette installation et exécuter: bundle install --path vendor / bundle pour installer les gems dans ./vendor/bundle/, ou vous pouvez entrer votre mot de passe et installer les gems fournis avec Rubygems à l'aide de sudo. Mot de passe: Récupération des métadonnées de pierres précieuses à partir de https://rubygems.org/… Récupération de métadonnées de version à partir de https://rubygems.org/… Récupération de métadonnées de dépendance à partir de https://rubygems.org/… Résolution de dépendances… Rubygems 2.0.14 n'est pas threadsafe, vos pierres précieuses seront installées une à la fois. Effectuez une mise à niveau vers Rubygems 2.1.0 ou ultérieure pour permettre l'installation parallèle de gem. Installer rake 10.5.0 Utiliser i18n 0.7.0 Installer json 1.8.3 avec des extensions natives Utiliser minitest 5.8.4 Utiliser thread_safe 0.3.5 Utiliser builder 3.2.2 Utiliser erubis 2.7.0 Utiliser mini_portile2 2.0.0 Utiliser rack 1.6.4 Utiliser mime 2.99 avec arel 6.0.3 Installation de debug_inspector 0.0.2 avec des extensions natives Utilisation de bundler 1.11.2 Installation de byebug 8.2.2 avec des extensions natives Installation de coffee-script-source 1.10.0 Installation de execjs 2.6.0 avec thor 0.19.1 Utilisation concurrente -ruby 1.0.0 Installation de multi_json 1.11.2 Installation de sass 3.4.21 Installation de tilt 2.0.2 Installation de spring 1.6.3 Installation de sqlite3 1.3.11 avec des extensions natives Installation de rdoc 4.2.1 Utilisation de tzinfo 1.2.2 Utilisation de nokogiri 1.6.7.2 Utilisation de rack -test 0.6.3 Utiliser mail 2.6.3 Installer binding_of_caller 0.7.2 avec des extensions natives Installer coffee-script 2.4.1 Installer uglifier 2.7.2 Utiliser sprockets 3.5.2 Installer sdoc 0.4.1 Utiliser activeupport 4.2.5.1 Utiliser loofah 2.0.3 Utilisation de rails-deprecated_sanitizer 1.0.3 Utilisation de globalid 0.3.6 Utilisation de activemodel 4.2.5.1 Installation de jbuilder 2.4.0 Utilisation de rails-html-sanitizer 1.0.3 Utilisation de rails-dom-testing 1.0.7 Utilisation de activejob 4.2.5.1 Utilisation de activerecord 4.2.5.1 Utilisation de actionview 4.2.5.1 Utilisation de actionpack 4.2.5.1 Utilisation de actionmailer 4.2.5.1 Utilisation des rails 4.2.5.1 Utilisation des rails à crémaillère 3.0.1 Installation des rails à café 4.1.1 Installation de jquery-rails 4.1.0 Utilisation des rails 4.2.5.1 Installation de sass-rails 5.0.4 Installation de la console Web 2.3.0 Installation de turbolinks 2.5.3 Le paquet est complet! 12 dépendances de Gemfile, 54 gemmes maintenant installées. Utilisez 'bundle show [gemname]' pour voir où une gem fournie est installée. Message de post-installation de rdoc: Selon votre version de ruby, vous devrez peut-être installer les données ruby ​​rdoc / ri: <= 1.8.6 : unsupported = 1.8.7 : gem install rdoc-data; rdoc-data --install = 1.9.1 : gem install rdoc-data; rdoc-data --install >= 1.9.2: rien à faire! Yay! run bundle exec spring binstub --all Avertissement: Vous utilisez Rubygems 2.0.14 avec Spring. Passez au moins à Rubygems 2.1.0 et exécutez 'gem pristine --all' pour améliorer les performances de démarrage. * bin / rake: ressort inséré * bin / rails: ressort inséré

Vous pouvez parcourir la structure de répertoire de l'infrastructure d'application Web Rails au sein de votre application:

$ cd blog $ ls Gemfile Rakefile config lib test Gemfile.lock app config.ru journal tmp README.rdoc bin db public vendor

Voici une vue du guide de démarrage indiquant comment Rails repose sur la convention de configuration:

Lancez votre serveur

Enfin, vous pouvez lancer votre serveur avec une ligne de commande:

$ bin / rails server Attention: vous utilisez Rubygems 2.0.14 avec Spring. Passez au moins à Rubygems 2.1.0 et exécutez 'gem pristine --all' pour améliorer les performances de démarrage. => Lancement de WEBrick => Application Rails 4.2.5.1 démarrant en développement sur http: // localhost: 3000 => Exécutez le "serveur de rails" pour davantage d'options de démarrage => Ctrl-C pour arrêter le serveur [2016-02-05 18 : 14: 05] INFO WEBrick 1.3.1 [2016-02-05 18:14:05] INFO ruby ​​2.0.0 (2015-04-13) [universal.x86_64-darwin15] [2016-02-05 18:14 : 05] INFO WEBrick :: HTTPServer # start: pid = 30576 port = 3000

Visitez votre application

Dans votre navigateur, accédez à http: // localhost: 3000 et vous devriez voir votre page d'accueil par défaut pour une application Rails générique:

Je dois dire que je souhaite que tout cela soit un peu plus propre. Cela dit, il existe d'excellentes ressources communautaires pour vous aider à grandir.

Aller plus loin

Voici un exemple de screencast gratuit GoRails couvrant l’architecture d’application de base présentée dans le répertoire ci-dessus:

Et le Guide Rails vous guide à travers un certain nombre d'étapes:

Globalement, il existe une grande variété de tutoriels écrits et de screencast pour vous guider..

En clôture

Si la qualité de Ruby on Rails et de sa communauté vous intrigue, j'espère que vous avez trouvé cette introduction utile. Peut-être que vous avez même essayé l'installation ci-dessus.

Plus récemment, je suis intrigué par l’approvisionnement ouvert de Swift par Apple, un entrant passionnant dans l’espace du langage de programmation orienté objet, semblable à Ruby, qui présente un potentiel à long terme similaire à celui de Rails..

Bien que j'aie travaillé avec Rails dans le passé, je me suis également heurté à des difficultés, notamment en ce qui concerne l'hébergement et l'extension des fonctionnalités. J'ai également trouvé que l'hébergement était plus coûteux. Je continue d’être très à l’aise avec Yii, que vous pouvez lire dans notre série de programmes Envato Tuts + Yii2. Et avec l’émergence de PHP 7, l’avenir semble plus rapide et plus brillant pour les frameworks de programmation basés sur PHP.

Si vous avez des questions, merci de les poster ci-dessous. Ou vous pouvez me contacter sur Twitter @reifman. Consultez ma page d’instructeur Envato Tuts + pour consulter les autres tutoriels que j'ai écrits, tels que Utiliser les médias sociaux pour localiser les témoins oculaires, qui met en évidence les API d’Instagram et de Twitter..

Liens connexes

  • Rubis sur rails
  • Ruby on Rails (Wikipedia)
  • Suivez @Rails sur Twitter
  • Abonnez-vous à Cette semaine dans Rails
  • Go Rails (screencasts et plus)
  • Ruby Programming Language (Wikipedia)
  • Contrôleur de vue modèle (Wikipedia)
  • RailsConf