Cela vient de l'expérience d'apprentissage, de la poursuite de l'apprentissage et de l'écriture d'une application relativement simple dans Rails.
1) Courbe d'apprentissage
Rails est d'une simplicité trompeuse. Les tutoriels, vidéos et livres montrent tous à quelle vitesse vous pouvez obtenir une application fonctionnelle (si moche), mais ceux-ci ne font qu'effleurer la surface. Ils ont tendance à dépendre fortement de la génération de code et de «l'échafaudage», qui est certes un bon outil lors de l'apprentissage mais qui survit rapidement à son utilité.
Ne vous y trompez pas, Rails est difficile à maîtriser. Une fois que vous aurez dépassé les bases (plus à ce sujet plus tard), vous courrez tête baissée dans un mur si vous devez faire plus que la fonctionnalité "d'application de démonstration" extrêmement simpliste que vous voyez vanté. Vous pouvez vous débrouiller avec une connaissance de base de Ruby tout en apprenant, mais vous devez rapidement prendre Ruby ou vous serez laissé haut et sec (et pas le bon type de DRY
) si vous devez aller en dehors des contraintes de Rails.
Rails est, comme j'aime l'appeler d'une manière aimante, la peinture par programmation numérique . Si vous respectez à 100% les conventions (c'est-à-dire que vous respectez les lignes et utilisez les couleurs qu'on vous dit d'utiliser), vous pouvez faire des applications décentes rapidement et facilement. Si et quand vous devez vous écarter, Rails peut passer de votre meilleur ami à votre pire ennemi.
2) Quand tout ce que vous avez est un marteau ...
Rails fait très bien les applications CRUD simplistes. Le problème survient lorsque votre application doit faire plus que lire / écrire à partir d'une base de données. Maintenant, pour mémoire, la dernière version de Rails que j'ai utilisée était la 2.3.4, donc les choses ont peut-être changé depuis, mais j'ai rencontré des problèmes majeurs lorsque les besoins de l'entreprise ont changé, de sorte que l'application devait avoir un petit système de workflow intégré et s'intégrer avec une ancienne application PHP. La convention Rails de "un formulaire, un modèle" fonctionne bien pour les applications triviales et les applications de saisie de données, mais pas tant lorsque vous devez faire une logique de traitement, ou avoir des flux de travail, ou tout ce qui n'est pas typique "L'utilisateur entre des données dans quelques champs de texte, frappe Soumettre "type de chose. Cela peut être fait, mais ce n'est en aucun cas «facile», ou plutôt ce n'était pas
De plus, Rails n'aime pas bien jouer avec d'autres applications qui n'utilisent pas ses méthodes préférées d'accès aux données; si vous devez vous interfacer avec une application qui n'a pas d'API de style "Web 2.0", vous devez contourner Rails au lieu de l'utiliser; encore une fois, je parle d'expérience ici car c'est ce qui m'est arrivé.
3) C'est nouveau
Enfin, Rails est toujours le "petit nouveau sur le bloc" dans de nombreux domaines. Cela n'a pas d'importance pour un usage personnel ou des scénarios de type "Je pense que c'est cool et je veux l'apprendre", mais parler comme quelqu'un qui préférerait utiliser Rails à mon travail de jour, si vous n'êtes pas dans un endroit où Rails est répandu, il peut être très difficile de trouver du travail à temps plein en tant que développeur Rails. C'est encore largement le domaine des «hip, nouvelles startups» et pas un acteur majeur dans la plupart des zones métropolitaines. Votre kilométrage peut varier à cet égard, mais je sais que ma région (Tampa) Rails est essentiellement inexistante.
4) Feu et mouvement
Rails est en constante évolution. C'est à la fois une bonne et une mauvaise chose; c'est bien parce que la communauté évolue et embrasse de nouveaux concepts. C'est mauvais parce que la communauté évolue et embrasse de nouveaux concepts. Cela peut être très accablant pour un débutant Rails parce que généralement lorsque vous rencontrez un problème et regardez autour de vous, vous verrez soit des gens recommander tel ou tel bijou pour le résoudre, soit dire que cette façon est mauvaise de toute façon et vous ne devriez pas '' t l'utiliser, voici une meilleure façon ... et vous vous retrouvez avec une liste de blanchisserie d'outils supplémentaires à apprendre avec Rails pour suivre les cognoscenti Rails. Des choses comme Git
, BDD/RSpec
, Cucumber
,Haml/Sass
, et une corne d'abondance d'autres choses flottent et sont considérées comme la "bonne façon de faire les choses" dans Rails-land, et en parlant d'expérience, vous pourriez finir par être submergé en essayant d'apprendre une douzaine de technologies ou plus en plus de Rails, car l'utilisation de la boîte à outils Rails standard semble "incorrecte".
Cela est maintenant encore plus compliqué par Rails 3.1, qui fait de Sass et CoffeeScript de toutes choses la valeur par défaut, donc un débutant total de Rails doit non seulement apprendre Ruby and Rails mais Sass (sans doute simple si vous connaissez CSS) et CoffeeScript (pas très difficile mais certainement suffisamment différent de JavaScript brut) au minimum pour commencer, et on peut supposer Git. Même sans prendre en compte RSpec et ses amis, et la douzaine de gemmes ou plus que vous finirez généralement, c'est 4 choses différentes que vous devez apprendre avant de pouvoir sérieusement commencer à écrire des applications Rails. Comparez cela à un langage comme C #, ou Java, ou même PHP où votre connaissance HTML / CSS / JavaScript / SQL ne va pas changer et vous n'avez qu'à apprendre le langage lui-même et peut-être les nuances du framework.