De quoi parle ce cours et pourquoi en ai-je besoin ? Comment j'ai appris Ruby on Rails en trois nuits. Et je n'ai jamais appris le langage de programmation Ruby pour débutants

L'un des premiers et des plus détaillés livres de formation Rails sur Internet. Le principal avantage est une couverture détaillée des problèmes les plus importants, des mises à jour régulières et un contenu de base gratuit.

Certes, la ressource est entièrement en anglais. Et il est important de comprendre que cela est construit sous la forme d'un livre - vous devez résoudre vous-même tous les problèmes. De ce fait, la durée et la complexité de la formation ne peuvent être prédites.

2. Diffusions ferroviaires

Une autre ressource éducative bien connue sur Internet. Plus d'une génération de développeurs Rails y ont grandi. Également en anglais.

Il n’est pas construit comme un cours de formation complet, mais comme une série de screencasts – de courtes leçons sur un sujet spécifique. Il existe de nombreuses leçons, vous pouvez les trouver sur presque tous les sujets.

Malheureusement, le projet a cessé de se mettre à jour en 2013.

3. Rails pour zombies

Une introduction ludique au on-rails pour débuter dans le style jeu de quête avec une ambiance zombie. Très populaire parmi les débutants complets.

C’est pratique car vous n’avez rien à installer sur votre ordinateur. Tous les problèmes sont résolus dans le navigateur. Étape par étape, vous parcourez le jeu et commencez à comprendre les bases de Ruby on Rails.

Si vous ne comprenez pas du tout la programmation, c'est votre choix. Il n'y a pas de sujets complexes dans le cours, rien ne détourne l'attention des bases. En anglais.

3.Udemy

Grande collection de cours vidéo. Parmi eux, il y en a beaucoup pour le rubis et le rubis sur rails. Il ne sert à rien de fournir des liens spécifiques - choisissez selon vos goûts en fonction du prix ou de la popularité.

Le format Udemy implique des cours assez courts mettant l'accent sur les cours vidéo. Ne vous attendez pas à des devoirs sérieux ou Support opérationnel enseignants.

4. Bourse rubis

Un cours court et puissant sur les bases du développement Rails. Professeurs expérimentés, bon programme.

La présence personnelle de l’étudiant au cours est souhaitable et n’a lieu que dans les grandes villes ukrainiennes.

5. Développement en Ruby on Rails de Evil Martians

Un cours intensif de trois jours dispensé par l'une des équipes Ruby on Rails les plus expérimentées de Russie.

Rarement fait. C'est cher (à en juger par les critiques, ça vaut le coup). Nécessite une présence personnelle. Convient uniquement aux programmeurs avancés ; les débutants n'ont rien à faire là-bas.

6. Cours intensif en ligne Ruby on Rails de « A Good Programmer »

Un nouveau projet d'une équipe connue sur Youtube pour ses cours Ruby pour débutants.

Le programme intensif de 3 mois est conçu pour les débutants complets et promet de faire de vous un programmeur junior doté d'un portefeuille de pas moins de 12 applications intelligentes.

Le cours comprend des leçons vidéo, des travaux pratiques, un soutien pédagogique et des webinaires réguliers.

A en juger par chaîne Youtube et les commentaires des utilisateurs - ces gars-là savent ce qu'ils font et vous ne vous ennuierez pas avec eux.

"Bonjour! Que fais-tu?" - "Oui, je vais programmer une chose en Ruby." - "Est-ce contagieux:-)"
C'est le dialogue que j'ai eu aujourd'hui avec un ami. Pourquoi rubis ?

Pourquoi apprendre Ruby

Cette question concerne ceux qui programment en PHP depuis longtemps et avec succès. Vous maîtrisez une langue, c'est super, mais ne vous arrêtez pas là. Beaucoup diront qu’ils connaissent la langue, qu’ils la connaissent et qu’ils en ont déjà appris toutes les astuces. Je vais vous donner quelques raisons pour apprendre Ruby.

  1. Curiosité. Par exemple, c'était très intéressant pour moi de travailler avec des classes ouvertes. Juste comme ça, prendre et injecter votre méthode dans une classe système - à mon avis, c'est génial. N'y aura-t-il pas de confusion ? Et comment faire ? En général, tout ce qui est nouveau est intéressant.
  2. . Parce que Je programme en PHP depuis longtemps, je me demande de quoi Ruby peut se vanter par rapport à PHP/
  3. Vitesse rubis. Twitter a été créé en Ruby (bien qu'il ait été récemment abandonné). J'aimerais tester ses performances dans la réalité.
  4. Classe de problèmes à résoudre. Ruby est bon pour les applications Web. Est-ce vrai ?
  5. Métaprogrammation. Peut-être la raison la plus importante.

Comment apprendre Ruby. Programme.

C'est là que ma première erreur a été de commencer à apprendre le framework sans connaître la langue. Maintenant, j'ai réalisé que ce n'était pas nécessaire. Oubliant pendant un moment Ruby on Rails, j'ai commencé à étudier Ruby lui-même, heureusement dans le système de tickets pendant longtemps Il y avait un problème système difficile à résoudre en PHP. Je ne voulais vraiment pas lui donner droits root Voilà donc le plan.

  1. Fonctions, classes, classes publiques. Attributs (accesseurs et mutateurs).
  2. Travailler avec des chaînes et des tableaux. Rechercher et remplacer des sous-chaînes, etc. Conversion de types.
  3. Travailler avec des fichiers.
  4. Travailler avec l'environnement système.
  5. Conception d'applications, travail avec des gems (modules).
  6. Travailler avec la base de données.
  7. Installation de Ruby sur Rails, .

Dans cet article, je publierai ma première application dans Ruby et inviterai tout le monde à la discussion. Signalez les erreurs, suggérez les meilleures pratiques, posez des questions.

Apprenons Ruby ensemble !

Leçon 1. Première application en Ruby.

La tâche est comme ça. Manger Serveur dns lors de l'hébergement et lors de l'appel de l'utilitaire de console dans Ruby, vous devez ajouter une zone pour le domaine ainsi qu'une entrée de zone dans la liste des zones (domains.list) et modifier une entrée dans la base de données où enregistrer ce domaine. Les paramètres d'accès à la base de données sont stockés dans application php, et plus particulièrement dans son fichier INI. Après toutes les étapes, vous devez redémarrer le serveur DNS (liaison).

Établi pour Ruby

J'utiliserai RubyMine de JetBrains comme IDE. Je les ai vraiment aimés. Même s'il s'agissait de phpStorm, la qualité est immédiatement visible. Nous installons Ruby via RVM d'abord pour tous les utilisateurs, puis nous le configurons pour root et notre utilisateur.

Extension des classes publiques Ruby

Pour travailler avec des fichiers INI dans Ruby, nous utilisons la gemme inifile. Mais il y a un petit problème avec cela. Dans le fichier ZF INI, vous pouvez utiliser des constantes en toute sécurité, et les lignes ressembleront à ceci :

IncludePaths = APPLICATION_PATH "/../vendors/Doctrine/"

C'est APPLICATION_INI qui fait exploser l'analyseur de gemmes. Plus précisément, cette ligne ne correspond à aucun modèle :

@rgxp_comment = %r/\A\s*\z|\A\s*[#(@comment)]/ @rgxp_section = %r/\A\s*\[([^\]]+)\] /o @rgxp_param = %r/\A([^#(@param)]+)#(@param)\s*"?([^"]*)"?\z/

C'est le cas de l'utilisation des classes publiques. Remplaçons la fonction IniFile::parse par la nôtre. Je mettrai tous les ajouts dans le fichier fucntion.rb

Class IniFile private # # call-seq # parse # # Analyse le contenu du fichier ini. # def analyse le retour sauf si File.file? (@fn) section = nil tmp_value = "" tmp_param = "" fd = (RUBY_VERSION >= "1.9" && @encoding) ? File.open (@fn, "r", :encoding => @encoding) : File.open (@fn, "r") while line = fd.gets line = line.chomp # mutline start # crée des variables tmp pour indiquer qu'un multine a démarré # et que les lignes suivantes du fichier ini seront vérifiées # par rapport aux autres rgxps mutline. if line =~ @rgxp_multiline_start alors tmp_param = $1.strip tmp_value = $2 + "\n" # le délimiteur de fin mutline est trouvé # effacez les variables tmp et ajoutez la paire param/valeur à la section elsif line =~ @rgxp_multiline_end && tmp_param != "" then section = tmp_value + $1 tmp_value, tmp_param = "", "" # tout le reste entre le début et la fin de la multiligne elsif line =~ @rgxp_multiline_value && tmp_param != "" then tmp_value += $1 + "\n" # ignorer les lignes vides et les lignes de commentaires elsif line =~ @rgxp_comment then next # ceci est une déclaration de section elsif line =~ @rgxp_section then section = @ini[$1.strip] # sinon nous avons un paramètre elsif line =~ @rgxp_param then start section[$1.strip] = $2.strip Rescue NoMethodError raise Error, "paramètre rencontré avant la première section" end elsif line =~ %r/APPLICATION_/ puis next else raise Error, "impossible d'analyser la ligne "#(line)" end end # tout en garantissant fd.close si défini fd et fd end end

Je vais également étendre la classe String pour permettre la validation de domaine.

Classe Chaîne def valid_domain_name ? nom_domaine = self.split(".") nom = /(?:+)+/.match(nom_domaine).nil? tld = /(?:(2)|aero|ag|asia|at|be|biz|ca|cc|cn|com|de|edu|eu|fm|gov|gs|jobs|jp|in|info| moi|mil|mobi|museum|ms|name|net|nu|nz|org|tc|tw|tv|uk|us|vg|ws)/.match(domain_name).nil ? (nom_domaine.count > 1 et nom != false et tld != false) end end

Sources

Eh bien, je vais maintenant vous montrer les sources réelles.
index.rb

#coding : utf-8 require "mysql2" require "socket" require "inifile" require "./functions.rb" # Hachage des adresses des machines serveur hosts = ( :production => "83.168.22.1", :test => " 84.22 .11.1" ) util = Util.new(hosts) util.releative_config_path="/site.com/application/config/application.ini" # La vérification des paramètres s'arrête si (ARGV.count != 2) domaine = ARGV nom d'hôte = ARGV . split(".") quit("Nom de domaine invalide") if (pas domain.valid_domain_name ?) # Rechercher une entreprise dans la base de données result = Mysql2::Client.new(util.get_db_settings).query("SELECT id FROM `sites` WHERE `hostname` = "#(hostname)"") quit("Société introuvable") if result.count != 1 # Mettre à jour ses lignes de nom d'hôte = Array.new result.each(|row| rows<< row} company_id = rows["id"] result = Mysql2::Client.new(util.get_db_settings).query("UPDATE `dbname`.`sites` SET `domain` = "#{domain}" WHERE `dao_companies`.`id` =#{company_id};") # Добавление зоны bind_config_path = "/etc/bind" default_zone_file = bind_config_path + "/zones/DEFALT" new_zone_file = bind_config_path + "/zones/#{domain}.zone" zones_list_file = bind_config_path + "/domains.lst" quit("File with default zone does not exists") unless File.exist?(default_zone_file) quit("File with zones list does not exists") unless File.exist?(zones_list_file) zone = IO.read(default_zone_file).gsub("SERIAL",Time.now.strftime("%Y%m%d%S")).gsub("DOMAIN", domain) if not File.exist?(new_zone_file) then File.open(new_zone_file, "w") {|f| f.puts(zone) } else quit("Domain "+domain+" zone already exists!") end # Добавление зоны в список zone = "zone \"#{domain}\" { type master; file \"/etc/bind/zones/#{domain}.zone\"; };" if not IO.read(zones_list_file).include?(domain) then File.open(zones_list_file, "a") {|f| f.puts(zone) } end # Перезапуск сервисов (bind9) system("service bind9 restart") puts "Completed"

Fichier de pierres précieuses
Ce fichier décrit les dépendances du projet.

Source : gemme rubygems "mysql2", gemme "0.2.6" "inifile"

Eh bien, et les fonctions réellement incluses.
fonctions.rb

#coding : classe utf-8 String def valid_domain_name ? nom_domaine = self.split(".") nom = /(?:+)+/.match(nom_domaine).nil? tld = /(?:(2)|aero|ag|asia|at|be|biz|ca|cc|cn|com|de|edu|eu|fm|gov|gs|jobs|jp|in|info| moi|mil|mobi|museum|ms|name|net|nu|nz|org|tc|tw|tv|uk|us|vg|ws)/.match(domain_name).nil ? (domain_name.count > 1 et name != false et tld != false) end end class IniFile private # # call-seq # parse # # Analyse le contenu du fichier ini. # def analyse le retour sauf si File.file? (@fn) section = nil tmp_value = "" tmp_param = "" fd = (RUBY_VERSION >= "1.9" && @encoding) ? File.open (@fn, "r", :encoding => @encoding) : File.open (@fn, "r") while line = fd.gets line = line.chomp # mutline start # crée des variables tmp pour indiquer qu'un multine a démarré # et que les lignes suivantes du fichier ini seront vérifiées # par rapport aux autres rgxps mutline. if line =~ @rgxp_multiline_start alors tmp_param = $1.strip tmp_value = $2 + "\n" # le délimiteur de fin mutline est trouvé # effacez les variables tmp et ajoutez la paire param/valeur à la section elsif line =~ @rgxp_multiline_end && tmp_param != "" then section = tmp_value + $1 tmp_value, tmp_param = "", "" # tout le reste entre le début et la fin de la multiligne elsif line =~ @rgxp_multiline_value && tmp_param != "" then tmp_value += $1 + "\n" # ignorer les lignes vides et les lignes de commentaires elsif line =~ @rgxp_comment then next # ceci est une déclaration de section elsif line =~ @rgxp_section then section = @ini[$1.strip] # sinon nous avons un paramètre elsif line =~ @rgxp_param then start section[$1.strip] = $2.strip Rescue NoMethodError raise Error, "paramètre rencontré avant la première section" end elsif line =~ %r/APPLICATION_/ puis next else raise Error, "impossible d'analyser la ligne "#(line)" end end # while Ensure fd.close si défini fd et fd end end def quit(message=nil) Banner = " ======================== == == | Outil d'ajout DNS | ============================ Utilisation : ruby ​​​​​​./index.rb domain.com olddomain.site.com" sinon message .nil ? then bannière = message end met la bannière exit end class Util attr_accessor:hosts, :releative_config_path, :environment def initialize(hosts =Array.new) self.hosts = hosts end # Obtention adresse IP locale def local_ip orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true # éteindre inverser temporairement la résolution DNS UDPSocket.open do |s| s.connect "64.233.187.99", 1 s.addr.last end assure Socket.do_not_reverse_lookup = orig end # Obtenir l'environnement def get_environment if @environment.nil ? then hosts = self.hosts.invert if(hosts.include?(self.local_ip)) then @environment = hosts else @environment = "development" end else @environment.to_s end end def get_config_path local_username = get_local_username "/home/" +local_username+"/sandbox"+self.releative_config_path end # Renvoie le nom d'utilisateur si l'utilitaire est lancé via rvmsudo ou directement def get_local_username if ENV["SUDO_USER"].nil? quit("Util doit être exécuté sur rmvsudo, \r\nexample : rvmsudo ruby ​​​​./index.rb domain.ru some.subdomain.ru") else ENV["SUDO_USER"] end end def get_db_settings config = IniFile :: load( self.get_config_path) section_name = self.get_environment.to_s + " : bootstrap" quit("Aucune section appropriée dans le fichier de configuration") sauf si config.has_section?(section_name) dsn = config.to_h["resources.doctrinedata.connections. par défaut. dsn"] # Analyser dsn dsn.sub!("mysql://", "") arr = dsn.split("@") dbconfig = ( :username => arr.split(":"), : mot de passe = > arr.split(":"), :host => arr.split("/"), :database => arr.split("/") ) fin fin

Et PHP ?

Cet article ne consiste pas à quitter PHP et à commencer à apprendre Ruby. PHP est le langage de programmation Web le plus populaire ; des milliers de choses et d'algorithmes intéressants y sont implémentés, y compris. même les réseaux de neurones. Et je l'aime) Au fil des années, on peut dire que je suis devenu proche de lui, malgré tous ses défauts. Mais cela ne signifie pas que vous n'avez pas besoin d'apprendre quelque chose de nouveau par vous-même.

Dernièrement, on m'a posé la question de savoir à partir de quels livres apprendre Ruby. Je lis celui-ci maintenant.

Ce livre est le guide officiel du langage de programmation dynamique Ruby. L'équipe d'auteurs est vraiment exceptionnelle : David Flanagan est un expert renommé dans le domaine de la programmation, auteur de plusieurs livres à succès sur JavaScript et Java ; Yukihiro "Matz" Matsumoto est le créateur et développeur principal de Ruby.
L'ouvrage fournit une description détaillée de tous les aspects du langage : la structure lexicale et syntaxique de Ruby, les types de données et expressions élémentaires, les définitions des méthodes, classes et modules. De plus, le livre contient des informations sur les fonctions API de la plateforme Ruby.

La publication intéressera les programmeurs expérimentés qui se familiarisent avec le nouveau langage Ruby, ainsi que ceux qui programment déjà en Ruby et souhaitent atteindre un niveau plus élevé de compréhension et de maîtrise du travail. Vous pouvez trouver le livre sur l'ozone ou le biblioglobus.

J'attends avec impatience vos commentaires sur le code et toutes les idées intéressantes !)

Merci!

Si cet article vous a aidé, ou si vous souhaitez soutenir mes recherches et mon blog, c'est parti La meilleure façon fais-le:

Ceci est le premier d'une série d'articles dans lesquels je parlerai des fonctionnalités de Ruby et Ruby on Rails et partagerai des conseils sur par où commencer à apprendre Ruby, où trouver des réponses aux questions, comment acquérir l'expérience dont vous avez besoin et comment vous démarquer des autres candidats. Je serais heureux si mes conseils aident quelqu'un à décider de sa spécialisation et à choisir Ruby pour étudier et travailler avec.

Principales caractéristiques et différences de Ruby

J'entends souvent la question : est-ce que cela vaut la peine d'apprendre Ruby ? En règle générale, la question repose sur des doutes : est-il facile de trouver un emploi dans cette spécialisation, s'il y aura des projets intéressants, etc. Ruby est un langage de programmation moderne et en constante évolution ; ses domaines d'application sont nombreux. Vous avez sûrement entendu parler de Chef, Vagrant, Homebrew, mais le plus souvent nous entendons tous parler de Rails. Voici un article avec un commentaire de l'auteur du framework expliquant pourquoi cela vaut la peine d'apprendre Rails.

Bien entendu, chacun décide lui-même quel outil utiliser. Et il ne sert à rien de débattre sans fin sur les raisons pour lesquelles une technologie est meilleure qu’une autre. J'ai choisi Ruby car c'est un langage incroyablement expressif et flexible qui permet de résoudre le même problème de plusieurs manières.

Ruby est un langage de programmation interprété, entièrement orienté objet, avec un typage dynamique puissant. Il combine une syntaxe de type Perl avec une approche orientée objet. Aussi, certaines fonctionnalités sont empruntées aux langages de programmation Python, Lisp, Dylan et CLU. L'implémentation multiplateforme de l'interpréteur du langage Ruby est distribuée dans des conditions open source. logiciel. Le code écrit en Ruby peut être compris même par une personne qui ne comprend pas la programmation. Des projets tels que Redmine, Twitter, Shopify, Basecamp, GitHub, Kickstarter, Airbnb et d'autres ont été créés sur RoR.

Avec l'essor de Node.js, la popularité de Ruby on Rails a quelque peu diminué, mais les startups technologiques utilisent souvent RoR en raison de sa facilité de prototypage. Ruby est le 11ème langage le plus populaire de l'indice TIOBE.

Avantages du rubis

  • Communauté nombreuse et conviviale.
  • La barrière à l’entrée est assez élevée, ce qui signifie qu’un développeur Ruby est susceptible d’avoir de l’expérience avec au moins un autre langage de programmation.
  • Vous utilisez uniquement les bibliothèques et modules nécessaires.
  • Il existe un grand nombre de bibliothèques utiles prêtes à l'emploi (Ruby Gems).
  • Il existe de nombreuses informations sur Ruby sur Internet, sous une forme structurée et triée.
  • Dans le contexte de la discussion sur Ruby, on ne peut manquer de mentionner le framework le plus populaire Ruby on Rails.

Parlons maintenant plus en détail de certains des avantages de Ruby.

Vitesse de développement

L'un des avantages de Ruby et du framework RoR est la rapidité de développement. Expérience personnelle et l'expérience de collègues montre que la résolution de problèmes dans Rails est une fois et demie plus rapide que dans d'autres frameworks similaires. Ruby est un outil très simple et il existe un grand nombre de solutions toutes faites pour différents types de problèmes.

Outils de mise en cache de données standard

Lors du développement d’un projet à grande échelle, l’un des aspects les plus importants est la mise en cache. Ruby on Rails est livré en standard avec des outils de mise en cache de données standard. Autrement dit, vous disposerez immédiatement d'outils pour mettre en cache les données du projet et vous pourrez facilement mettre en cache des blocs de code individuels ou même des pages entières.

Teste d’abord, code ensuite

Souvent, lors du développement de grands projets, la question des tests se pose, et il n'est pas rare qu'il n'y ait pas de fonds supplémentaires pour une équipe distincte de testeurs. Rails a également une solution à ce problème. Si vous comparez RoR avec d'autres frameworks dans le cadre des tests d'applications, vous trouverez de nombreuses solutions toutes faites pour tout type de tests, qu'ils soient d'intégration ou unitaires. Toutes ces bibliothèques fonctionnent immédiatement. Idéalement, dans un projet Ruby on Rails, aucun code n'est écrit tant que des tests n'ont pas été écrits pour celui-ci. L’idéologie RoR implique l’utilisation initiale des méthodes BDD (Behaviour Driven Development) ou TDD (Test Driven Development).

Normes de processus de développement communément acceptées pour les développeurs Ruby

Lorsque je parle des avantages de Ruby, je ne peux m'empêcher de mentionner à nouveau la communauté Ruby. Il grandit, se développe constamment et est toujours prêt à aider. Il y a toujours quelqu'un qui vous dira comment résoudre au mieux un problème et partagera son expérience dans n'importe quel domaine.

Également un point très important - dans la communauté Ruby, il existe depuis de nombreuses années des normes pour le processus de développement, certaines règles/accords communautaires selon lesquels le développement est effectué, ce qui simplifie grandement le travail. Grâce à ces normes, chaque projet est très structuré ; en conséquence, un nouveau développeur dans l'équipe sera rapidement opérationnel et utile dès les premiers jours de travail. Et plus encore : si le projet a été lancé par une équipe et terminé par une autre, ce n'est pas non plus un problème du tout. Puisque le développement est réalisé selon les règles et accords communautaires déjà mentionnés, nouvelle équipe comprendra rapidement et facilement le projet et le terminera avec succès sans perdre beaucoup de temps.

Ruby on rails propose également un grand nombre de solutions prêtes à l'emploi dans accès libre. La plupart des solutions ont déjà été implémentées par quelqu'un avant vous et également testées par la communauté, ce qui réduit le besoin de développer à partir de zéro. Il peut s'agir d'authentification, d'autorisation, de systèmes de commentaires, de systèmes de paiement, de listes de diffusion, etc.

Des solutions toutes faites pour le multilinguisme des projets

Rails est livré avec très des outils puissants pour localiser le projet. Il est possible à la fois de prendre en charge plusieurs langages dans un premier temps et de l'implémenter ultérieurement. Le projet contient des fichiers spéciaux pour traduire les termes, des outils pour afficher des modèles dans différentes langues et bien plus encore.

Haut niveau de protection des données

De nos jours, des articles sur le piratage de diverses ressources sont souvent publiés en ligne. Les développeurs du framework Ruby on Rails ont pris la question de la protection des données très au sérieux. RoR inclut initialement le cryptage des mots de passe et des données cartes de crédit et autres données personnelles des utilisateurs, les injections SQL et les attaques XSS sont également exclues. Tous les paramètres d'entrée sont échappés par défaut.

Apprendre Ruby

Parlons maintenant de la manière exacte dont vous pouvez maîtriser Ruby.

Théorie

Il faut bien sûr commencer par la littérature. Je recommande ces sources :

  • Rubis dans 20 minutes - bonne ressource pour les débutants complets. Permet de se familiariser avec les structures de base du langage en moins d'une demi-heure et de commencer à écrire vos propres petits programmes.
  • Codecademy est une plateforme proposant des cours en ligne dans une variété de domaines, notamment Ruby et Rails purs. Ici, le processus éducatif est structuré de manière assez intéressante, du matériel théorique est donné et immédiatement tâche pratique pour le sécuriser. Les tâches finales sont payantes, mais même sans elles, vous pouvez acquérir les compétences nécessaires.
  • Documents sur Ruby et Rails - une collection de liens vers divers sites et livres dédiés à l'étude de Ruby et Rails.
  • Je peux particulièrement recommander le livre Flanagan D., Matsumoto Y. « The Ruby Programming Language ». Il est considéré comme l'un des meilleurs, son auteur est le créateur du langage Ruby.
  • Google :)

Voici quelques ressources pour vous aider à démarrer :

  • w3schools.com/sql - ici vous pouvez lire, essayer et tester vos connaissances en SQL.
  • quizful.net/test - vous trouverez ici les questions souvent posées lors des entretiens.

Anglais

Je crois qu'il ne sert à rien de s'attarder sur ce point en détail, puisque c'est le sujet d'un article séparé. L'anglais est très important et c'est un fait bien connu. Je voudrais simplement mentionner brièvement les deux points les plus importants.

Premièrement, l'anglais est la langue principale de la communauté internationale, par conséquent, la plupart de la littérature utile sera également en anglais, de nombreuses nouvelles, rapports et articles importants paraîtront également en premier en anglais. Si vous souhaitez connaître la réponse à une question, il y a de fortes chances que vous la trouviez d'abord en anglais.

Deuxièmement, plus vous maîtrisez l’anglais, plus vous avez de chances de trouver un emploi. La plupart des clients sont étrangers, la connaissance de l'anglais est donc importante pour une communication productive, une compréhension claire des spécifications techniques et un bon contact avec le client.

Pratique

Après avoir étudié plusieurs ressources, il convient de passer à la partie la plus importante, à savoir la pratique. Il existe de nombreux exemples de tâches avec une boutique en ligne ou un simple blog sur Internet (en voici un), notamment lorsqu'il s'agit de Rails. Au cours de l'exécution de tâches déjà un peu plus proches des tâches réelles, vous rencontrerez certainement des problèmes et vous passerez ensuite à la formation de l'une des qualités les plus importantes - la capacité de Google. Malheureusement, je n'ai trouvé aucun tutoriel ou cours dédié à cette compétence, mais elle joue certainement un rôle très important dans le travail quotidien.

Cours

Après avoir lu la théorie et rédigé plusieurs « projets favoris », vous pouvez bien sûr tenter de passer des entretiens, mais il arrive souvent que ces connaissances ne suffisent pas. Cela est dû à l’afflux important de candidats, et compte tenu de la concurrence, chacun essaie de se démarquer et de se préparer du mieux possible.

Un autre point important de la formation qui peut être un avantage en votre faveur lors de la recherche d'un emploi sont les cours de programmation. À moins, bien sûr, que vous ayez un mentor prêt à consacrer un certain temps à l’élaboration des tâches et à leur révision.

Je dirai tout de suite que je ne recommande en aucun cas de suivre des cours sans avoir déjà quelques connaissances. Je considère les cours comme un excellent moyen de consolider les connaissances acquises grâce à l'autoformation. Et maintenant, je n'essaie pas de faire la publicité d'une école en particulier, mais je vais vous expliquer exactement quels avantages peuvent en tirer :

Avec un degré de probabilité élevé tu apprendras quelque chose que tu ne savais pas avant. Les cours comportent un volume de matière assez important, qui est présenté sous une forme structurée, ce qui permet de mieux assimiler la matière.

Pendant le cours, vous aurez mentor, qui examinera les solutions à vos problèmes et signalera les faiblesses et les erreurs.

Motivation. Ceci s'adresse principalement à ceux qui ont besoin d'aide pour l'autodiscipline. Il est parfois assez difficile de se forcer à faire quelque chose, quelles que soient les perspectives qui se profilent à l’horizon. Lorsque vous suivez des cours, vous aurez un emploi du temps clair à suivre et des devoirs à réaliser, sinon vous serez expulsé. La motivation financière joue également ici un rôle dans le cas de cours payants. Après tout, lorsque vous donnez votre argent durement gagné, vous avez une attitude complètement différente à l'égard de la question et l'idée de simplement faire une promenade surgit beaucoup moins souvent.

Un autre avantage - certificat. Il est clair qu'au final vous serez évalué sur vos connaissances, et non sur la présence de bouts de papier dans votre CV. Mais néanmoins, ce sera un plus, surtout s'il existe un candidat avec un niveau de connaissances similaire, mais sans justificatif.

Un de plus projet sur GitHubà votre tirelire. Si vous êtes un développeur novice, le projet écrit dans les cours sera probablement plus intéressant d'un point de vue technologique que ceux écrits précédemment.

Et le plus important - emploi. Quand je parle de cours, je ne parle pas seulement de ceux pour lesquels il faut payer de l’argent. Souvent, les entreprises recrutent elles-mêmes pour se former afin de pouvoir embaucher les meilleurs plus tard. Il peut s'agir d'un cours interne ou d'un stage/stage. Cette option est la meilleure, puisque vous n’avez rien à payer, vous bénéficiez de l’expérience et de tous les avantages ci-dessus et, en plus, d’une réelle perspective d’emploi. Il est plus difficile d'y accéder, mais les perspectives sont plus importantes.

Total

Ruby est un langage qui vous permet de travailler sans grandes quantités les inconvénients et les cérémonies qui accompagnent les langues fortement typées. Ruby est facile à démarrer, surtout si vous avez déjà de l'expérience en développement dans d'autres langages de programmation, et vous serez en mesure de créer rapidement un prototype avec Ruby on Rails. Au Japon, où il est originaire, Ruby était utilisé pour créer des jeux. Ruby est concis et se lit comme l'anglais, ce qui rend le code facile à comprendre pour les débutants.

Lorsqu’il s’agit d’apprendre Ruby, je tiens à le répéter : vous devez commencer petit. Lisez quelques livres, faites quelques devoirs par vous-même, puis, si vous ressentez le besoin d'acquérir plus de connaissances et d'expérience ou une motivation supplémentaire, vous pouvez suivre des cours ayant déjà un certain nombre de connaissances acquises par vous-même.

Idéalement, ce sont des cours dispensés par une entreprise qui vous fera une offre à la fin si vous réussissez bien. Option alternative- des cours payants qui vous aideront à consolider vos connaissances, à ajouter un autre projet à votre CV et à acquérir l'expérience, ce qui est le plus important au début. Mais ne vous attendez pas à ce qu'après avoir terminé des cours payants, vous réussissiez facilement un entretien en montrant votre certificat. Dans tous les cas, les connaissances seront évaluées.

Dans le même temps, si vous avez suffisamment de motivation, de patience, de capacités et d'expérience avec d'autres langages de programmation, vous pouvez facilement maîtriser Ruby par vous-même, car il existe de nombreuses informations utiles et bien structurées sur Internet. De plus, grâce à la vaste communauté Ruby ouverte, vous pouvez facilement trouver des réponses en ligne à de nombreuses questions possibles que, avec un degré de probabilité élevé, quelqu'un a déjà posées avant vous.

Amusez-vous à apprendre ! Et dans le prochain article, nous parlerons du code.

Abonnez-vous à notre chaîne Telegram pour juniors pour ne pas manquer des offres d'emploi, stages, cours, articles intéressants.

Je voulais apprendre Ruby on Rails depuis un certain temps maintenant. niveau de base. Sans objectif précis. Plutôt, juste pour vous-même, pour mieux comprendre ce qu'il a de si spécial (contrairement à 100 500 autres technologies et frameworks), qui vous permet de créer et de faire évoluer rapidement des projets Internet assez chargés. Une raison secondaire était le désir d’essayer de nouvelles approches d’apprentissage. Lorsque j'étudiais pour devenir programmeur, nous n'avions que des livres et des forums où l'on pouvait demander conseil. Il existe désormais des manuels interactifs et des écoles de programmation en ligne, un grand nombre de screencasts (presque un rêve : regarder des programmes de gourous), des bases de connaissances comme stackoverflow.com et des tonnes de code source sur GitHub, où vous pouvez passer des heures à étudier le code source du vrai avantages. J'ai décidé de réserver les nuits suivantes (et il n'y avait tout simplement pas de temps pendant la journée) pour essayer de nouvelles façons d'apprendre par l'action.

Première nuit

Commencez à apprendre Ruby on Rails sans au moins connaissance minimale Ruby lui-même serait étrange. J'ai déjà suivi le guide interactif ruby-lang.org. Mais dès que je l'ai passé, j'ai tout de suite tout oublié. Ses créateurs promettent qu'il faudra quinze minutes pour compléter et maîtriser la syntaxe de Ruby. Il m'en a fallu trente. C'est vrai, avec une distraction constante sur Twitter. Le processus ressemble à ceci. Ils vous disent : « Les tableaux dans Ruby sont déclarés comme ceci, et les données sont récupérées à partir de tableaux comme celui-ci. Essayons maintenant de créer un tableau et d'en extraire N éléments. Nous allons vérifier." Vous lisez comment tout fonctionne et essayez-le tout de suite. Bien sûr, vous n’apprendrez pas Ruby de cette façon. Il vaut mieux y penser comme à un cours super-express qui fonctionne.

Et pourtant Ruby lui-même est très loin du framework Ruby on Rails. Je voulais maîtriser les rails. De notre article sur l'éducation en ligne, je me suis certainement souvenu du cours sensationnel Zombie for Rails railsforzombies.org. C'est la même chose que Try Ruby, un didacticiel interactif qui vous apprend à créer des applications ferroviaires dès le départ. Tout d'abord, ils vous donnent une mini-conférence (en anglais, mais tout est très clair - activez les sous-titres) sur la structure des fichiers d'une application ferroviaire, l'approche CRUD pour travailler avec les données, ils expliquent comment le modèle MVC est implémenté dans les rails , et ainsi de suite. Après chaque vidéo, il vous est demandé d'effectuer des tâches pour consolider le matériel. Tout semble simple et clair, le parcours passe inaperçu en une heure ou deux (c'est court). Mais! Après le cours, ai-je senti que je pouvais rédiger une candidature ferroviaire ? Malheureusement non!

Deuxième nuit

L'une des raisons pour lesquelles après Rails for Zombies vous avez quelques connaissances de base, mais aucune confiance, est l'environnement virtuel dans lequel se déroule la formation. D’une part, cela réduit le seuil d’entrée à l’extrême : vous n’avez pas à vous soucier de votre environnement. D’un autre côté, vous ne créez rien de réel en cours de route – pas de « Hello World » pour vous à la sortie. Et surtout, de quel côté aborder sa création n’est pas clair. À partir de ce moment-là, j'ai voulu essayer Ruby on Rails en action, en l'installant sur le système (avant cela, je n'avais même pas besoin d'essayer) et créer une application simple à partir de zéro.

Je ne me souviens pas comment, mais tout à fait par hasard, je suis tombé sur un cours de screencast très réussi sur rails.hasbrains.org russe. Merci à l'auteur pour sa présentation compétente : il explique méthodiquement en détail les principes de fonctionnement de l'application ferroviaire, vous plongeant au passage dans toutes les subtilités nécessaires. Pour faire court, j'ai passé toute la deuxième nuit de l'expérience à regarder la première moitié de plus de trente épisodes de ces screencasts.

L'image de la façon dont une application est générée, comment travailler avec la console ferroviaire, comment créer des modèles et des migrations, comment mettre à jour les modèles et comment valider les données qu'ils contiennent, les contrôleurs RESTful, etc. a finalement été corrigée dans ma tête. En regardant chacun des épisodes, j'ai immédiatement tout essayé en action, en créant une application ferroviaire entièrement fonctionnelle. Il est devenu clair comment les rails sont conçus en principe.

Troisième nuit

Le troisième soir, il restait les derniers épisodes des screencasts, que j'ai réussi à regarder d'un seul coup : travailler avec les rails ne me paraissait plus si sauvage. À ce moment-là, quelqu'un m'a dit que le cours Rails for Zombies avait une suite judicieuse et beaucoup plus profonde. Certes, le cours est déjà payant et est hébergé au sein de l'école de programmation Code School www.codeschool.com. Ce n'était pas une honte de payer 25 dollars pour avoir accès à tous les cours de l'école. Il s'agit d'un prix mensuel, donc si vous ne l'aimez pas, n'oubliez pas d'annuler votre abonnement.

Le cours Rails for Zombies 2 s’est avéré être un véritable succès. Il est vrai qu’il s’agissait en grande partie d’une répétition de ce que j’avais vu dans les screencasts, mais c’était même en partie agréable. Cinq niveaux et cinq blocs d'exercices que vous réalisez directement dans la console interactive. À ce stade, les rails semblaient déjà logiques, compréhensibles et utilisables.

Dans Code School, vous pouvez programmer directement dans le navigateur tout en effectuant les devoirs du cours.

Et après?

Ai-je appris à réaliser des projets complexes ? Non. Mais j'ai définitivement réalisé les approches utilisées dans les rails et j'ai compris leur commodité. J'ai appris à créer rapidement applications simples et en très peu de temps, augmentez ses fonctionnalités en utilisant des gemmes écrites par la communauté. J'ai trouvé le courage et je continue d'aimer apprendre les meilleures pratiques en utilisant les programmes Code School (je suis actuellement un cours sur les tests unitaires). Et cela me rend vraiment heureux que l’apprentissage de la technologie soit devenu si simple.

Souvent les cours Ruby sont indissociables des cours Ruby on Rails car ils sont trop proches les uns des autres. Tous ces programmes de formation sont axés sur des méthodes efficaces et développement simple des applications Web. Les applications Ruby on Rails peuvent être à la fois des sites ordinaires et des sites multifonctionnels réseaux sociaux et les boutiques en ligne.

Les cours de langage Ruby se concentrent sur l'apprentissage de la syntaxe, des types de données et des principales bibliothèques. La connaissance du langage est la base pour suivre le programme de formation Ruby on Rails.

La formation au framework Ruby on Rails comprend toutes les étapes de création d'une application - en commençant par installation correcte et se terminant par le travail final sous la forme de votre propre application Web.

Après la formation, vous pourrez

  • créer des applications dans le langage de programmation Ruby ;
  • écrire des programmes basés sur les principes de la POO ;
  • utilisez le modèle de conception MVC dans votre travail ;
  • créer une interaction entre le serveur Web et l'application ;
  • tests de code automatisés
  • développer dans le framework Ruby on Rails
  • utilisez des plugins et des gemmes populaires pour Ruby on Rails afin de ne pas créer votre propre code à partir de zéro

Pour qui

Pour maîtriser avec succès le programme du cours, vous devez avoir des compétences en programmation dans n'importe quel langage, comprendre le balisage HTML et travailler avec SGBD MySQL. Pour une formation de base au langage Ruby, aucune compétence en programmation n’est requise, il vous suffit d’avoir une expérience avec un PC.

Certificats d'achèvement

Tous les centres de formation délivrent des attestations de fin de cours. Le type de certificat dépend du centre de formation, mais seules les compétences qui en résultent comptent pour l'employeur.