
Cet article est la traduction d'un
article du programmeur Krzysztof Kopidlowski consacré à l'exploration des avantages de Ruby on Rails. Le matériel intéressera principalement les programmeurs débutants et seulement ensuite les professionnels.
Ruby on Rails peut vous faire gagner du temps que vous passez habituellement à développer. Tout simplement parce que lors de l'utilisation de ce framework, le code sera moindre et la fonctionnalité restera la même.
Skillbox recommande: Cours pratique "Profession Web Developer" .
Nous vous rappelons: pour tous les lecteurs de «Habr» - une remise de 10 000 roubles lors de l'inscription à un cours Skillbox en utilisant le code promo «Habr».
De Java à Ruby
Pour moi, travailler avec Ruby est un véritable gain de temps. Je peux me concentrer sur les méthodes et la logique, plutôt que de jouer avec beaucoup de code ligne par ligne. Avant, je pensais que Java changeait la donne, mais après avoir découvert Ruby on Rails, j'ai été encore plus impressionné.
Depuis environ un an, j'écris en Java et je fais du développement backend. Il me semble que tout programmeur travaillant avec ce langage comprendra de quoi je parle. Supposons que vous souhaitiez écrire un point de terminaison pour renvoyer un fichier .zip. Vous pouvez résoudre ce problème sans problème particulier, mais cela nécessite des centaines de lignes de code.
Mais si je vous dis que quelques dizaines de lignes peuvent être supprimées?

Voici Ruby - un langage de programmation de haut niveau orienté objet, dynamique, réfléchissant et interprété. Il a une implémentation multithreading indépendante du système d'exploitation, un typage dynamique fort, un garbage collector et de nombreuses autres fonctionnalités. Il a écrit de nombreuses applications Web, notamment GitHub et Twitter.
Ruby réduit le code
Peut-être vous demandez-vous comment il est généralement possible de réduire la quantité de code à plusieurs dizaines de lignes tout en préservant la logique indiquée ci-dessus. C'est vraiment possible, et nous ne parlons pas encore de frameworks, il s'agit de langage pur.
Par exemple, si vous avez un tableau et que vous souhaitez augmenter tous les éléments de 2, puis les renvoyer dans l'ordre inverse en Java, le code ressemblera à ceci (à l'aide de l'interface List):
import java.util.*; import java.util.stream.Stream; import static java.util.Collections.reverseOrder; import static java.util.stream.Collectors.toList; public class MyClass { public static void main(String args[]) { List<Integer> list = Stream.of(1, 2, 3) .map(val -> val + 2) .sorted(reverseOrder()) .collect(toList()); list.forEach(System.out::println); } }
La même chose en Ruby ressemblerait à ceci:
array = Array.new (5,2)
array.map {| x | x + 2} .reverseLa différence est évidente. Et vous n'avez pas besoin d'importer de classes.
Typage dynamique
Après nous être assurés qu'il ne peut pas y avoir vraiment trop de lignes de code, nous pouvons penser au fait que le type de variable n'est pas défini dans l'exemple ci-dessus. C'est vrai - le fait est que dans Ruby, toutes les variables sont typées dynamiquement.
Si vous écrivez une méthode qui prend deux paramètres, vous n'avez pas besoin de spécifier leurs types, vous pouvez simplement vous concentrer sur la logique. Résultat: moins de code, plus de qualité et plus propre.
Ruby possède également de nombreuses méthodes propriétaires qui accélèrent le codage. Lors de l'écriture de programmes, j'utilise le plus souvent la conversion Hash en Array, puis en JSON. En Ruby, je peux l'exécuter avec une seule ligne!
Sur rails
Le framework Ruby le plus populaire est Rails. Il fournit à peu près les mêmes fonctionnalités pour un langage que Spring pour Java. Je voudrais partager certaines de mes conclusions qui pourraient vous être utiles.
Tous les points d'extrémité au même endroitL'une des choses que j'aime chez Rails est que je n'ai besoin que d'un seul fichier pour déclarer tous mes points de terminaison. Je peux toujours utiliser la commande de terminal $ rake routes pour les voir. C'est une excellente option pour les grands projets lorsque vous devez faire quelque chose en fonction de ce qui est déjà écrit.
De plus, vous pouvez diviser vos points de terminaison en groupes. Par exemple, lorsque vous disposez d'un modèle utilisateur, vous pouvez définir les chemins d'accès pour tous ses membres afin que chaque point de terminaison obtienne automatiquement son propre identifiant.
Vous n'avez pas besoin d'utiliser des paramètres différents pour les mêmes points de terminaison. Dans Rails, par défaut, vous pouvez transmettre tous les paramètres au point de terminaison et simplement valider ceux que vous souhaitez utiliser dans le contrôleur.
def user_params
params.require (: utilisateur) .permit (: nom ,: nom de famille ,: date de naissance ,: avatar)
finBases de données RailsToutes les migrations sont enregistrées ici dans l'application, donc la configuration d'une base de données sur différents appareils revient à exécuter une seule commande: $ bundle rake db: setup. Ainsi, un client externe n'est tout simplement pas nécessaire pour configurer ou utiliser la base de données.
Et non, la base de données que vous avez créée et transférée vers un autre appareil ne sera pas vide: dans votre application Rails, il y a un fichier appelé seeds.rb dans lequel vous pouvez spécifier tous les enregistrements pour différents modèles nécessaires au fonctionnement de l'application. Par conséquent, le modèle n'a besoin que de quelques lignes de code.
La commande $ bundle rake db: setup a trois fonctions:
- Crée une base de données si elle n'existe pas déjà;
- Exécute toutes les migrations;
- Entre toutes les données source de votre fichier de départ.
Le code est vraiment propre: ActiveRecords écrit simplement les méthodes que vous devez implémenter, pas les attributs.
Dans le framework Hibernate pour Java, vous devez enregistrer tous les attributs avec des annotations, puis des setters pour les attributs que vous devez modifier. Dans ce cas, vous obtenez une grande quantité de code sur la sortie.
Dans Rails, la même chose occupe une ligne. Le schéma de base de données est enregistré dans le fichier schema.rb, qui est automatiquement créé au démarrage de la migration. Et la classe n'a pas besoin de setters ou d'attributs. Lorsque ces derniers sont nécessaires, il suffira d’écrire: Model.attribute - et c’est tout.
Comme mentionné ci-dessus, avec Rails, vous pouvez vous concentrer sur la logique et les méthodes de votre projet, plutôt que sur le code.

Conclusion
Ruby on Rails vous offre des outils puissants comme la frappe dynamique ou le bogue qui accélèrent assez bien le processus de programmation.
Si vous souhaitez suivre un cours de développement d'applications Web, assurez-vous d'essayer d'écrire une petite application Rails pour comprendre comment cela fonctionne. Il n'est jamais trop tard pour apprendre quelque chose de nouveau - même si vous préférez les outils traditionnels.