Quels sont les inconvénients de RoR? [fermé]

39

J'essaie actuellement de choisir le langage serveur à apprendre et à utiliser pour le développement Web. Bien qu'il soit relativement facile de savoir pourquoi x, y ou z est une bonne chose, il est plus difficile de comprendre les inconvénients de chacun. d'eux.

En particulier, je suis curieux de savoir quels sont les inconvénients de l’apprentissage et / ou de l’utilisation de Ruby on Rails par opposition à tout autre langage / cadre donné.

Maxfielden
la source
5
Cela m'a fait détester ASP.NET, beaucoup. Ce qui était un problème puisque c'était mon travail quotidien.
Jeremy
5
Mentionnons simplement cela dans un commentaire, au cas où d’autres voudraient élaborer, mais une chose qui est à la fois un avantage et un inconvénient est que RoR peut être un peu trop "magique" parfois - il peut être difficile de comprendre parfois ce qui se passe derrière. les scènes (et donc, si vous êtes nouveau dans le développement Web, vous prendrez beaucoup de choses pour acquis). Bien sûr, ceci est fondamentalement vrai pour tous les langages de haut niveau, et c'est aussi ce qui les rend plus faciles et plus rapides à utiliser.
Grautur
1
FWIW si vous regardez RoR, regardez certainement ASP.NET MVC3 avec Razor. Et honnêtement, si vous aimez être payé (ce qui est mon cas), c'est 40% de la raison pour laquelle je développe sous ASP.NET. Les 60% restants sont, à mon avis, la meilleure période pour la plate-forme Web, même si elle a ses points faibles, lesquels de ceux-ci ont presque tous été sommairement terminés par Nuget.
Pensez à RoR comme un outil pour les applications CRUD, vous pouvez faire d'autres choses avec, mais pour des choses plus générales, d'autres langages / frameworks sont plus flexibles sans créer de désordre.
alfa64

Réponses:

59

Parlant d'expérience: l'inconvénient est que vous utilisez un peu trop le framework Rails . C’est une excellente chose si vous n’écrivez que des applications CRUD simples et novatrices qui tombent carrément dans le "sweet spot" de Rails; votre productivité va monter en flèche. Cependant, au moment où vous devez faire quelque chose en dehors de cette zone privilégiée - interagir avec une base de données existante, communiquer avec une autre application pour laquelle aucune API JSON ou XML n'est définie, implémenter un flux de travail compliqué, Rails deviendra votre ennemi. il estIl est possible de faire ces choses avec Rails, mais cela va "à contre-courant", vous devez donc vous débrouiller seul pour savoir comment le faire, car la communauté répondra généralement par "Ne faites pas cela, ce ne sont pas les Rails manière "- il en résulte une perte de productivité ou un code très compliqué, car vous devez fondamentalement pirater le framework Rails.

En outre, il y a l'inconvénient tacite: tout le reste semblera laid et kludgy. Une fois que vous avez goûté au nectar sucré et sucré de Rails (d'accord, évangélisez un peu ici ...), tout le reste est en sauce. Passer de Rails à PHP, à ASP.NET WebForms ou à Java, c'est comme marcher sur un lit de clous après avoir gambadé dans un jardin luxuriant; vous ne verrez pas les autres langages / structures de la même manière et, même si vous les appréciez toujours, vous aspirerez secrètement à l'étreinte aimante de Rails.

Wayne Molina
la source
11
Cela ressemble à tous les autres cadres: dès que vous avez besoin de quelque chose hors de la boîte, cela devient un combat.
Nemanja Trifunovic
12
Oui, mais j'ai trouvé que c'était un peu pire avec Rails parce que tout le framework est construit sur l'idée que vous n'aurez jamais de raison d'avoir besoin de quelque chose "d'emblée". Comparez cela à Zend pour PHP ou ASP.NET MVC, ou Django pour Python et ils sont beaucoup plus flexibles que Rails tout en offrant les avantages d'un framework. Ce n'est pas vraiment un slam contre Rails, cependant.
Wayne Molina
3
Mais heureusement, RoR n’est pas le seul framework Web basé sur Ruby. Moi-même, je préfère Sinatra + Datamapper + Haml / Sass ou encore Sinatra + Sequel + Sequel + Haml / Sass pour une expérience SQL brute ... RoR est excellent par rapport aux solutions Java .NET. Mais c'est un monstre lourd comparé à d'autres frameworks web basés sur Ruby.
Philippe
4
J'ai du mal à déterminer si Wayne aime ou déteste RoR. Cette relation amour / haine est-elle commune à la plupart des développeurs de RoR?
Phil
2
@Phil un peu de la colonne A, un peu de la colonne B. J'adore RoR, même si je n'en connais pas beaucoup; Je continue d'essayer de l'apprendre parce que c'est vraiment sympa. Mais d'un autre côté, je l'ai utilisée dans une application du "monde réel" et elle m'a mordue au cul lorsque je devais sortir du cadre d'une application CRUD qui communique avec une seule base de données avec une à deux modèles, et c'était tout.
Wayne Molina
30

Pour votre premier langage côté serveur, je pense qu’il peut y avoir quelques problèmes avec RoR:

  1. Vous n’apprenez pas seulement une langue, vous apprenez un cadre. Je prendrais certainement un peu de temps pour jouer avec le vieux rubis ordinaire avant de sauter dans les rails.

  2. Comme il s’agit d’un cadre, et d’un «avisé», je pense que cela vous donnerait une portée très limitée de tout ce qui se passe dans le cadre.

Globalement, Ruby on Rails peut être un bon point de départ pour lancer le processus, mais il y a beaucoup à apprendre sur le développement Web que vous pouvez manquer à cause d'un trop grand nombre de frameworks.

GSto
la source
15

J'ai essayé d'apprendre RoR plusieurs fois et mon plus gros problème est toujours d'essayer de faire fonctionner correctement les paquets et la documentation. Le problème avec la documentation est qu’elle semble toujours être obsolète (ou très basique). J'ai eu les bases du site, mais au-delà, tout semblait si démodé (même le livre que j'ai acheté et qui a fini par revenir). Une autre chose qui pourrait être un inconvénient est la dépendance de certaines bibliothèques et la manière dont elles peuvent entrer en conflit avec une autre, comme l'a dit Ben Coe .


Une chose à laquelle j'ai pensé plus tard et au lieu d'en faire un commentaire, je vais modifier ma réponse est la suivante: RoR a une chance de ruiner Ruby pour vous. Je sais que quand j'ai essayé, ça m'a fait penser que "Ruby était stupide". Puis, quelques mois plus tard, j'ai décidé d'essayer Ruby et j'ai adoré la langue. C'est le cadre qui m'a fait détester la langue. Je n'y ai pas beaucoup essayé, mais quand je l'ai fait, j'ai vraiment apprécié Sinatra . Je pense que j'ai eu la joie que la plupart des gens retirent de RoR de Sinatra.

Jetti
la source
+1 j'ai eu la même expérience. J'ai essayé d'apprendre Ruby on Rails, mais j'ai eu une erreur juste en faisant rake db:migrate. D'autre part, j'ai trouvé Sinatra beaucoup plus simple et facile à comprendre. Quoi qu'il en soit, je préfère mettre en place les choses à ma façon, et la structure de base d'une application pour rails me semblait trop compliquée.
Zhehao Mao
@Zhehao Mao - Je suis heureux de voir que je ne suis pas le seul à avoir cette expérience. Bien que, je ne pense pas que ce soit compliqué ... tant que vous pensez exactement de la même manière que DHP. Si vous avez un type de processus de pensée différent, RoR peut être une douleur à l'arrière.
Jetti
Je suppose que ce n'est pas que c'est compliqué. Je suppose que mon problème était que chaque fois que j'essayais de créer une application rails, rien ne fonctionnait comme prévu par la documentation.
Zhehao Mao
J'ai trouvé cela incroyablement compliqué à cause de ce fait également. C'est aussi pourquoi j'ai abandonné. Pour qu'il soit RAD, il doit fonctionner. Honnêtement, je pense que j'aurais pu créer une application CRUD en C ++ plus rapidement que RoR à cause de tous les problèmes que je rencontrais pour le faire fonctionner (un peu exagéré mais quand même ...)
Jetti
Je ne sais pas si vous avez lu les bons documents ou pourquoi vous n'avez pas demandé de l'aide ...
sevenseacat Le
12

S'il s'agit de votre premier langage côté serveur, il est aussi bon que tous les autres. La chose à faire est de vous concentrer sur l’un d’entre eux et, une fois que vous avez l’impression de le maîtriser, explorez les autres et tirez vos propres conclusions.

Je travaille quotidiennement avec RoR et ASP.NET, mais étrangement, je préfère le monde ASP.NET, mais cela a plus à voir avec la philosophie personnelle qu'avec le langage ou l'architecture elle-même. (Je suis un peu un maniaque du contrôle et je gravite personnellement vers des langages fortement typés).

Peu importe, je dis de tenter le coup. RoR est un environnement de travail idéal, mais avant de vous lancer dans Rails, familiarisez-vous avec Ruby en tant que langue. Au-delà des contenus Web, Ruby est un langage de script assez cool si vous devez gérer un boîtier * nix et vous faire gagner un temps précieux.

Marlon
la source
4
+1 pour contrôle freak. J'ai un peu de cette série aussi. Pas seulement pour le type fort, mais aussi - je ressemble en fait à la configuration (malgré la verbosité), plutôt qu'aux conventions qui me supposent.
Bobby Tables
Idem, @Bobby Tables!
Marlon
6

En tant que personne qui a appris Rails récemment (en tant que passe-temps - ne l’a jamais utilisé pour un développement de niveau commercial) et qui avait déjà travaillé pour JEE et ASP.NET, la réponse de Wayne M. sonnait très vraie.

Quoi qu'il en soit, il y a un côté subtil à cela que personne n'a encore mentionné, mais qui m'a un peu gêné avec Rails - la forte dépendance de la convention par rapport à la configuration .

Essentiellement, si vous êtes habitué à utiliser l'orientation "Rechercher dans les fichiers" avec une nouvelle base de code, le CdC risque de vous importuner lorsque vous essayez de récupérer Rails. C’est génial pour les greenfields CRUD simples qui sont effectués précisément selon Rails (comme le dit Wayne M), mais pour tout ce qui est plus unique et plus compliqué, il sera difficile de déterminer ce qui se passe si vous essayez de définir le flux en recherchant trucs dans des fichiers pour voir comment la plomberie est raccordée.

Bien que je pense, ce problème ne sera probablement pas aussi grave une fois que vous aurez beaucoup plus d'expérience avec Rails. Je peux vraiment voir que c'est un problème pour quelqu'un venant du développement Web oldskool Java / .NET qui est habitué à un flux de configuration très détaillé - et qui a l'habitude de voir tout ce qui est écrit quelque part.

Tables Bobby
la source
1
Cela m'a un peu gêné au début, mais ce n'est plus le cas maintenant. C'était formidable de pouvoir écrire une migration de base de données pour créer de nouvelles colonnes, puis d'attacher une logique métier aux nouvelles données sans étape de mappage distincte.
Kevin Cline
@ kevincline Comment cela se fait-il dans RoR? Vous pouvez le faire avec AOP dans le monde Java et .NET.
écraser
@crush: Java et .NET sont pénibles car vous devez explicitement créer et mapper des propriétés dans la classe mappée pour chaque colonne de la base de données utilisée par la logique applicative. Ajouter une colonne signifie changer plusieurs classes. RoR fait tout cela à l'exécution par convention. Vous modifiez le schéma de base de données, puis vous ne modifiez que la logique applicative et la couche de présentation pour utiliser la nouvelle colonne.
kevin cline
5

Avec moi, le plus gros problème avec j'apprends mon premier X (dans votre cas, X est un langage / framework web côté serveur), c’est que dès que je vois d’autres problèmes, je veux tout de suite commencer à appliquer X, même si pourrait ne pas être la meilleure option. Je me suis amélioré à cela, mais c'est toujours une forte tendance.

Ruby on Rails est un bon choix pour commencer - il existe une bonne communauté, de nombreux documents et de bons tutoriels. Mais n'oubliez pas de garder à l'esprit les alternatives, surtout si vous commencez à faire plus de développement Web. RoR peut être exagéré pour certains problèmes, une solution inadéquate pour d'autres et le meilleur choix pour un ensemble différent. Sachez ce que sont ses forces, ses faiblesses et comment utiliser cet outil.

Thomas Owens
la source
4

Mon conseil serait d’avoir une image claire du projet que vous voulez mener à bien et d’essayer de le construire. Lorsque vous rencontrez des problèmes, vous finirez par saisir tous les bons outils. Cette approche est bonne car vous prenez des décisions à partir de problèmes succincts.

Une autre chose à faire est d'acheter des livres. Les didacticiels sur Internet ne me le permettent pas. ils laissent également beaucoup de place à la distraction. Lorsque vous avez un livre, les éditeurs doivent s'assurer qu'il apporte de la valeur, car ils perdront de l'argent s'il reçoit de mauvaises critiques. Dépenser un peu d'argent vous fera économiser beaucoup de temps.

Spencer
la source
Mais n'oubliez pas sur railscasts.com. Il fait un travail remarquable en vous donnant un aperçu d'un sujet / concept en 10 minutes environ. Je me souviens avoir passé tout un week-end à essayer de faire fonctionner Sunspot, puis j'ai regardé un programme Railscast de 10 minutes sur la façon de mettre en œuvre une recherche par facettes et je l'ai mise en place en moins d'une heure. Vaut bien le 9 $ / mois.
Kyle Carlson
1

Honnêtement, je ne comprends pas ceux qui discutent avec poésie de ce qu’est une promenade dans le jardin, Ruby-on-Rails. J'y suis arrivé en tant que développeur ASP.NET-MVC, Java, PHP, Python expérimenté - et j'ai trouvé que c'était le plus horrible des gaspilleurs de temps! 90% des réponses Google en ligne sont fausses ou incomplètes. Pourquoi? Cela a-t-il changé chaque année? Ou est-ce que personne ne se soucie de faire fonctionner le code? Cela m'a pris énormément de temps pour faire des choses simples; beaucoup, beaucoup plus que cela ne me prendrait dans C # / ASP.NET-MVC, par exemple. Il ne m'a certainement jamais fallu si peu de temps pour apprendre mes technologies d'origine. Certes, ROR est concis. Si c'est important pour toi. Mais j’ai rarement trouvé comment créer du code permettant d’accomplir une tâche. Personnellement, je préfère taper sur un clavier pendant 20 secondes pour écrire un code qui fonctionne, est clair et vous pouvez le suivre plutôt que taper du code laconique Ruby pendant 2 secondes, mais qui ne fonctionne jamais tant que je ne suis pas debout toute la nuit à la recherche d’un moyen de le faire fonctionner. C'est un tas de dodos horrible et puant. Pourquoi? Est-ce que le code open-source (comme dans le code libre) ne produit aucune incitation à en faire un outil de qualité? Trop de script-kiddies pompant des révisions et des modules et une mauvaise documentation? Je ne sais pas. Mais quand j'ai finalement pu échapper à ce premier projet Ruby-Rails, j'ai juré de ne plus jamais me retrouver dans ce pétrin! ne produit aucune incitation à en faire un outil de qualité? Trop de script-kiddies pompant des révisions et des modules et une mauvaise documentation? Je ne sais pas. Mais quand j'ai finalement pu échapper à ce premier projet Ruby-Rails, j'ai juré de ne plus jamais rentrer dans ce pétrin! ne produit aucune incitation à en faire un outil de qualité? Trop de script-kiddies pompant des révisions et des modules et une mauvaise documentation? Je ne sais pas. Mais quand j'ai finalement pu échapper à ce premier projet Ruby-Rails, j'ai juré de ne plus jamais rentrer dans ce pétrin!

James Hurst
la source
Cet article est plutôt difficile à lire (mur de texte). Pourriez - vous l' esprit modifier ing dans une meilleure forme?
Gnat
Cette réponse est hilarante. Rails est très clairement, objectivement, un gain de temps. Vos rancunes à son encontre sont purement et simplement dues au fait que vous êtes nouveau et s’attendent à ce que tout clique dans les premières semaines. Les migrations de bases de données à elles seules valent la peine de passer à Rails.
sergserg
0

J'accepte certaines des réponses ci-dessus à propos de RoR. Je développe des applications avec RoR depuis deux ans. C’est vraiment bien avec des applications simples, les opérations CRUD (Créer, Lire, Mettre à jour et Supprimer) fonctionnent très bien, c’est une aubaine pour le développement d’applications simples, mais aussi ses limites. Bien qu'il y ait beaucoup de pierres précieuses qui offrent divers avantages et facilité d'utilisation, c'est fondamentalement ça. En sortant de la boîte, vous obtiendrez des applications complètement tordues.

Si vous êtes une grande équipe travaillant sur une application utilisant RoR, la délégation de travail peut s'avérer difficile.

Prashanth Pendurthi
la source
Une chose qui m'a parfois surpris, c'est que beaucoup de joyaux qui semblent apparemment indépendants de RoR ne sont utilisés qu'avec RoR, et non en mode autonome. Très curieux de savoir pourquoi. PS: Je ne suis pas un programmeur Ruby, alors j’ai peut-être eu une mauvaise impression. Mais je suis tombé sur cela quelques fois. Malheureusement, je n'ai aucun exemple pour le moment .
Août