¿Cuáles son las desventajas de RoR? [cerrado]

39

Actualmente estoy tratando de decidir qué lenguaje del lado del servidor aprender y usar para el desarrollo web, y aunque es relativamente fácil obtener información sobre por qué x, y, o z es algo bueno, es más difícil descubrir las desventajas de cada uno de ellos.

En particular, tengo curiosidad acerca de los inconvenientes que existen para aprender y / o usar Ruby on Rails en lugar de cualquier otro lenguaje / marco dado.

maxfielden
fuente
55
Me hizo odiar ASP.NET, mucho. Lo cual era un problema ya que ese era mi trabajo diario.
Jeremy
55
Solo menciono esto en un comentario, en caso de que otros quieran dar más detalles, pero una cosa que es tanto una ventaja como una desventaja es que RoR puede ser un poco "mágico" a veces; a veces puede ser difícil entender lo que está sucediendo detrás las escenas (y, por lo tanto, si eres nuevo en el desarrollo web, darás muchas cosas por sentado). Por supuesto, esto es básicamente cierto para todos los lenguajes de alto nivel, y también es lo que los hace más fáciles y rápidos de trabajar.
Grautur
1
FWIW si estás viendo RoR definitivamente mira ASP.NET MVC3 con Razor. Y, sinceramente, si te gusta que te paguen (seguro que sí), ese es el 40% de la razón por la que desarrollo en ASP.NET. El otro 60% es que creo que es el mejor período de la plataforma web, incluso si tiene sus puntos débiles, que casi todos han terminado sumariamente con Nuget.
Piense en RoR como una herramienta para aplicaciones CRUD, puede hacer otras cosas con él, pero para cosas más generales, otros lenguajes / marcos son más flexibles sin hacer un lío.
alfa64

Respuestas:

59

Hablando por experiencia: la desventaja es que confías demasiado en el marco de Rails . Esto es algo maravilloso y maravilloso si solo está escribiendo aplicaciones CRUD simples y nuevas que caen directamente en el "punto óptimo" de Rails; Su productividad se disparará. Sin embargo, en el momento en que tenga que hacer algo fuera de ese punto óptimo: interactúe con una base de datos existente, hable con otra aplicación que no tenga una API JSON o XML definida, implemente un flujo de trabajo complicado, Rails se convertirá en su enemigo. que eses posible hacer estas cosas con Rails, pero va "contra la corriente", así que básicamente estás solo para descubrir cómo hacerlo, ya que la comunidad generalmente responderá con "No hagas eso, no son los Rails manera ": esto resulta en pérdida de productividad o código muy desordenado, ya que básicamente tienes que hackear el marco de Rails.

Además, está el inconveniente tácito: todo lo demás parecerá feo y torpe. Una vez que hayas probado el dulce, dulce néctar de Rails (está bien, evangelizando solo un poco aquí ...) todo lo demás es genial. Volver de Rails a PHP, o ASP.NET WebForms, o Java es como caminar sobre una cama de clavos después de retozar en un exuberante jardín; no verá los otros lenguajes / marcos en la misma luz, y si bien aún puede apreciarlos, secretamente anhelará el amoroso abrazo de Rails.

Wayne Molina
fuente
11
Suena como cualquier otro marco: en el momento en que necesita algo fuera de la caja, se convierte en una lucha.
Nemanja Trifunovic
12
Sí, pero he descubierto que es un poco peor con Rails porque todo el marco se basa en la idea de que nunca tendrás una razón para necesitar algo "listo para usar". Compare eso con Zend para PHP o ASP.NET MVC, o Django para Python, y son mucho más flexibles que Rails y aún ofrecen los beneficios de un marco. Sin embargo, eso no es realmente un golpe contra Rails.
Wayne Molina
3
Pero afortunadamente, RoR no es el único marco web basado en Ruby. Yo mismo prefiero Sinatra + Datamapper + Haml / Sass o, alternativamente, Sinatra + Sequel + Sequel + Haml / Sass para la experiencia de SQL en bruto ... RoR es excelente en comparación con las soluciones basadas en Java .NET. Pero es un monstruo pesado en comparación con otros frameworks web basados ​​en Ruby.
Philip
44
Me está costando determinar si Wayne ama u odia a RoR. ¿Es esta relación de amor / odio común entre la mayoría de los desarrolladores de RoR?
Phil
2
@Phil un poco de la Columna A, un poco de la Columna B. Me encanta RoR, aunque en realidad no sé mucho; Sigo tratando de aprenderlo porque realmente es agradable. Pero por otro lado, lo he usado en una aplicación del "mundo real" y me mordió el culo cuando tuve que salir de la caja de una aplicación CRUD que habla con una sola base de datos con 1-2 modelos por formulario, y eso fue todo.
Wayne Molina
30

Para su primer idioma del lado del servidor, siento que puede haber un par de problemas con RoR:

  1. No solo estás aprendiendo un idioma, estás aprendiendo un marco. Definitivamente me tomaría un tiempo jugar con el viejo rubí antes de saltar a los rieles.

  2. Dado que es un marco, y uno 'obstinado', creo que le daría un alcance muy limitado de lo que está sucediendo en el marco.

En general, Ruby on Rails puede ser un buen punto de partida para poner en marcha la pelota, pero hay mucho que aprender sobre el desarrollo web que puede perderse al depender demasiado de un solo marco.

GSto
fuente
15

He intentado aprender RoR varias veces y mi mayor problema siempre es intentar que los paquetes funcionen correctamente y la documentación. El problema con la documentación es que siempre parece estar desactualizado (o muy básico). Obtuve lo básico del sitio, pero más allá de eso, todo parecía tan anticuado (incluso el libro que compré y terminé regresando). Otra cosa que podría ser un inconveniente son las dependencias que tienen algunas de las bibliotecas y cómo pueden entrar en conflicto con otras, según lo declarado por Ben Coe .


Algo en lo que pensé más tarde y en lugar de hacer un comentario, solo editaré mi respuesta es esta: RoR tiene la posibilidad de arruinar a Ruby por ti. Sé que cuando lo probé, me hizo pensar que "Ruby era estúpido". Luego, unos meses más tarde, decidí darle una oportunidad a Ruby y me encantó el idioma, fue el marco lo que me hizo odiar el idioma. No me he metido mucho en eso, pero cuando lo hice, realmente disfruté de Sinatra . Creo que obtuve la alegría que la mayoría de la gente saca de RoR de Sinatra.

Jetti
fuente
+1 Tuve la misma experiencia. Traté de aprender Ruby on Rails, pero recibí un error solo al hacerlo rake db:migrate. Por otro lado, descubrí que Sinatra es mucho más simple y fácil de entender. En cualquier caso, prefiero configurar las cosas a mi manera, y la estructura básica de una aplicación de rieles me pareció demasiado complicada.
Zhehao Mao
@Zhehao Mao: me alegra ver que no soy el único con esta experiencia. Aunque, no creo que sea complicado ... siempre y cuando pienses exactamente de la misma manera que DHH. Si tiene un tipo diferente de proceso de pensamiento, RoR puede ser un dolor en la parte trasera.
Jetti
Supongo que no es que sea complicado. Supongo que mi problema era que cada vez que intentaba crear una aplicación de rieles, nada funcionaba de la forma en que la documentación decía que debería.
Zhehao Mao
Lo encontré increíblemente complicado debido a ese hecho también. Por eso también me rendí. Para que sea RAD tiene que funcionar. Sinceramente, creo que podría haber hecho una aplicación CRUD en C ++ más rápido que RoR debido a todos los problemas que estaba teniendo para poner en funcionamiento RoR (un poco exagerado pero aún así ...)
Jetti
No estoy seguro de si estaban leyendo los documentos correctos, o por qué no pidieron ayuda ...
sevenseacat
12

Si este es su primer idioma del lado del servidor, es tan bueno como cualquiera. Lo que hay que hacer es concentrarse en uno, y después de sentir que lo ha dominado, explore a otros y deduzca sus propias conclusiones.

Trabajo a diario con RoR y ASP.NET, pero, curiosamente, prefiero el mundo ASP.NET, pero eso tiene más que ver con la filosofía personal que con el lenguaje o la arquitectura en sí. (Soy un poco un fanático del control y personalmente gravito en lenguajes fuertemente tipados).

En cualquier caso, digo que lo pruebes. RoR es un excelente entorno para trabajar, pero antes de saltar directamente a Rails, siéntete cómodo con Ruby como idioma. Más allá de las cosas web, Ruby es un lenguaje de scripting bastante bueno si tienes que administrar una caja * nix y puedes ahorrarte un montón de tiempo.

Marlon
fuente
44
+1 para monstruo de control. También tengo un poco de esa racha. No solo para el tipo fuerte, sino también: en realidad me gusta la configuración (a pesar de la verbosidad), en lugar de las convenciones que hacen suposiciones para mí.
Bobby Tables
Lo mismo, @Bobby Tables!
Marlon
6

Como alguien que aprendió Rails recientemente (como un pasatiempo, nunca lo usó para el desarrollo de grado comercial) y ya había trabajado en JEE y ASP.NET, la respuesta de Wayne M sonó muy cierta.

De todos modos, hay un lado sutil de esto que nadie ha mencionado todavía, pero que me molestó un poco con Rails: la fuerte dependencia de la convención sobre la configuración .

Esencialmente, si está acostumbrado a la orientación basada en "Buscar en archivos" con una nueva base de código, es probable que CoC lo moleste cuando intente recoger Rails. Es ideal para campos verdes CRUD simples que se realizan precisamente a la manera de Rails (como dice Wayne M), pero para cualquier cosa más única y complicada, será difícil resolver lo que está sucediendo si intentas resolver el flujo buscando cosas en archivos para ver cómo se conectan las tuberías.

Aunque creo que este problema probablemente no será tan malo una vez que tenga mucha más experiencia con Rails. Definitivamente puedo ver que es un problema para alguien que viene del desarrollo web Java / .NET de oldskool que está acostumbrado a un flujo de configuración muy detallado, y está acostumbrado a confiar en ver todo explicado en alguna parte.

Mesas Bobby
fuente
1
Eso me molestó un poco al principio, pero luego ya no lo hizo. Fue genial poder escribir una migración de la base de datos para crear nuevas columnas, luego adjuntar la lógica empresarial a los nuevos datos sin un paso de mapeo separado.
Kevin Cline
@kevincline ¿Cómo logras eso en RoR? Puede hacerlo con AOP en Java y .NET world.
aplastar
@crush: es doloroso en Java y .NET porque tienes que crear explícitamente y asignar propiedades en la clase asignada para cada columna de la base de datos que usa la lógica de negocios. Agregar una columna significa cambiar varias clases. RoR hace todo esto en tiempo de ejecución por convención. Modifica el esquema de la base de datos, luego simplemente cambia la lógica de negocios y la capa de presentación para usar la nueva columna.
Kevin Cline
5

Conmigo, el mayor problema con el que aprendo mi primera X (en su caso, X es un lenguaje / marco web del lado del servidor), es que tan pronto como veo otros problemas, inmediatamente quiero comenzar a aplicar X, incluso cuando Puede que no sea la mejor opción. He mejorado en esto, pero sigue siendo una tendencia fuerte.

Para empezar, Ruby on Rails es una buena opción: hay una buena comunidad, mucha documentación y buenos tutoriales. Pero asegúrese de tener en cuenta las alternativas, especialmente si comienza a hacer más desarrollo web. RoR puede ser excesivo para algunos problemas, una solución inadecuada para otros y la mejor opción para un conjunto diferente. Sepa sus fortalezas, debilidades y cómo usar la herramienta.

Thomas Owens
fuente
4

Mi consejo sería tener una idea clara del proyecto que desea completar y luego comenzar a tratar de construirlo. A medida que tenga problemas, eventualmente tomará todas las herramientas adecuadas. Este enfoque es bueno porque está tomando decisiones basadas en problemas sucintos.

Otra cosa que hacer es comprar libros. Los tutoriales de Internet no son suficientes en mi experiencia; también dejan mucho espacio abierto para distraerse. Cuando tienes un libro, los editores deben asegurarse de que proporcione valor, ya que perderán dinero si recibe malas críticas. Gastar un poco de dinero te ahorrará mucho tiempo.

Spencer
fuente
Pero no te olvides de railscasts.com. Él hace un trabajo excepcional al darle una visión general de un tema / concepto en aproximadamente 10 minutos. Recuerdo que pasé todo un fin de semana tratando de hacer que Sunspot funcionara, luego vi un Railscast de 10 minutos sobre cómo implementar una búsqueda facetada, y lo puse en funcionamiento en menos de una hora. BIEN vale la pena los $ 9 / mes.
Kyle Carlson
1

Honestamente, no puedo entender a aquellos que se entusiasman poéticamente sobre lo que es un paseo por el jardín de Ruby-on-Rails. Llegué a esto como un experimentado desarrollador de ASP.NET-MVC, Java, PHP, Python, ¡y descubrí que era el desperdicio de tiempo más horrible de todos! El 90 por ciento de las respuestas de Google en línea son incorrectas o están incompletas. ¿Por qué? ¿Ha cambiado tanto cada año? ¿O es que a nadie le importa hacer que el código realmente funcione? Me llevó mucho tiempo hacer cosas simples; mucho, mucho más de lo que me llevaría en C # / ASP.NET-MVC, por ejemplo. Ciertamente, nunca me llevó tanto tiempo aprender mis tecnologías originales. De acuerdo, ROR es conciso. Si eso es importante para ti. Pero descubrí que rara vez estaba claro cómo crear código que lograra una tarea. Personalmente, prefiero escribir en un teclado durante 20 segundos para escribir el código que definitivamente funciona, está claro y puede seguirlo, en lugar de escribir el código Ruby breve durante 2 segundos, pero que nunca funciona hasta que estoy despierto toda la noche buscando alguna forma de hacerlo funcionar. Es un horrible y apestoso montón de dodo. ¿Por qué? ¿Es ese código de fuente abierta (como en libre), no produce incentivos para convertirlo en una herramienta de calidad? ¿Demasiados script-kiddies bombeando revisiones y módulos y con mala documentación? No lo sé. Pero cuando finalmente pude escapar del primer proyecto de Ruby-Rails, ¡juré que nunca volvería a meterme en ese lío! no produce incentivos para que sea una herramienta de calidad? ¿Demasiados script-kiddies bombeando revisiones y módulos y con mala documentación? No lo sé. Pero cuando finalmente pude escapar del primer proyecto de Ruby-Rails, ¡juré que nunca volvería a meterme en ese desastre! no produce incentivos para que sea una herramienta de calidad? ¿Demasiados script-kiddies bombeando revisiones y módulos y con mala documentación? No lo sé. Pero cuando finalmente pude escapar del primer proyecto de Ruby-Rails, ¡juré que nunca volvería a meterme en ese desastre!

James Hurst
fuente
esta publicación es bastante difícil de leer (muro de texto). ¿Te importaría editarlo en una mejor forma?
mosquito
Esta respuesta es graciosa. Rails es definitivamente, objetivamente un ahorro de tiempo. Tus rencores en su contra son puramente porque eres nuevo y esperas que todo haga clic en las primeras semanas. Solo vale la pena cambiar a Rails por las migraciones de bases de datos.
sergserg
0

Estoy de acuerdo con algunas de las respuestas anteriores sobre RoR, he estado desarrollando aplicaciones con RoR durante los últimos dos años. Es realmente bueno con aplicaciones simples, las operaciones CRUD (Crear, Leer, Actualizar y Eliminar) funcionan muy bien, es una bendición para desarrollar aplicaciones simples, pero también son sus limitaciones. Aunque hay muchas gemas que ofrecen varias ventajas y facilidad de uso, es básicamente eso. Al salir de la caja obtendrá todas las aplicaciones retorcidas.

Si usted es un gran equipo que trabaja en una aplicación que utiliza RoR, la delegación de trabajo puede ser difícil de evitar.

Prashanth Pendurthi
fuente
Una cosa que me sorprendió de vez en cuando fue que muchas gemas que parecen ser independientes de RoR resultan ser utilizadas solo con RoR, y no de forma independiente. Muy curioso por qué es esto. PD: no soy un programador de Ruby, por lo que podría haber tenido la impresión equivocada. Pero me topé con esto algunas veces. Lamentablemente no tengo ejemplos en este momento .
Htbaa