Esto se debe a la experiencia de aprender, continuar aprendiendo y escribir una aplicación relativamente simple en Rails.
1) curva de aprendizaje
Rails es engañosamente simple. Los tutoriales, videos y libros demuestran cuán rápido puede obtener una aplicación que funcione (aunque fea), pero estos realmente solo rascan la superficie. Tienden a depender en gran medida de la generación de código y el "andamiaje", que sin duda es una buena herramienta para el aprendizaje, pero rápidamente supera su utilidad.
No se equivoquen, Rails es difícil de dominar. Una vez que haya superado los conceptos básicos (más sobre esto más adelante), se encontrará con una pared si necesita hacer más que la funcionalidad extremadamente simple de "aplicación de demostración" que ve promocionada. Puede sobrevivir con un conocimiento básico de Ruby mientras aprende, pero rápidamente necesita recoger a Ruby o se quedará seco (y no el buen tipo DRY
) si necesita salir de las restricciones de Rails.
Rails es, como me gusta llamarlo de una manera amorosa, pintar por programación de números . Si te apegas al 100% a las convenciones (es decir, te mantienes dentro de las líneas y usas los colores que te dicen que uses), puedes hacer aplicaciones decentes de manera rápida y fácil. Sin embargo, si tienes que desviarte, Rails puede pasar de tu mejor amigo a tu peor enemigo.
2) Cuando todo lo que tienes es un martillo ...
Rails hace aplicaciones CRUD simplistas muy bien. El problema surge cuando su aplicación tiene que hacer más que solo leer / escribir desde una base de datos. Ahora, para el registro, la última versión de Rails que utilicé fue 2.3.4, por lo que las cosas pueden haber cambiado desde entonces, pero me encontré con problemas importantes cuando cambiaron los requisitos comerciales, por lo que la aplicación tuvo que tener un pequeño sistema de flujo de trabajo integrado e integrarse con Una aplicación PHP heredada. La convención de Rails de "una forma, un modelo" funciona bien para aplicaciones triviales y aplicaciones de entrada de datos, pero no tanto cuando necesita hacer lógica de procesamiento, o tener flujos de trabajo, o cualquier cosa que no sea la típica "El usuario ingresa datos en unos pocos campos de texto, pulsa Enviar "tipo de cosa. Se puede hacer, pero de ninguna manera es "fácil", o más bien no fue
Además, a Rails no le gusta jugar bien con otras aplicaciones que no usan sus métodos preferidos de acceso a datos; si tiene que interactuar con una aplicación que no tiene una API de estilo "Web 2.0", debe evitar Rails en lugar de hacerlo con ella; Una vez más, hablo por experiencia aquí, ya que esto es lo que me pasó.
3) es nuevo
Finalmente, Rails sigue siendo el "chico nuevo en el bloque" en muchas áreas. Esto no importa para el uso personal o el tipo de escenarios "Creo que es genial y quiero aprenderlo", pero hablando como alguien que preferiría usar Rails en mi trabajo diario, si no estás en un lugar donde está Rails generalizado, puede ser muy difícil encontrar trabajo a tiempo completo como desarrollador de Rails. Todavía es en gran medida el dominio de las "nuevas empresas modernas" y no un jugador importante en la mayoría de las áreas metropolitanas. Su millaje puede variar en este sentido, pero sé que mi área (Tampa) Rails es esencialmente inexistente.
4) Fuego y movimiento
Rails está en constante cambio. Esto es bueno y malo a la vez; es bueno porque la comunidad evoluciona y adopta nuevos conceptos. Es malo porque la comunidad evoluciona y adopta nuevos conceptos. Puede ser muy abrumador para un novato de Rails porque, por lo general, cuando te encuentras con un problema y miras a tu alrededor, verás a personas recomendando tal y tal gema para solucionarlo, o diciendo que de todos modos eso es malo y que no deberías ' No lo use, esta es una mejor manera ... y termina teniendo una lista de herramientas adicionales para aprender junto con Rails para mantenerse al día con los cognoscenti de Rails. Cosas como Git
, BDD/RSpec
, Cucumber
,Haml/Sass
, y una gran cantidad de otras cosas flotan y son empujadas como la "forma correcta de hacer las cosas" en Rails-land, y hablando por experiencia, puede terminar abrumado tratando de aprender una docena o más de tecnologías además de Rails, porque usar el kit de herramientas estándar de Rails se siente "mal".
Esto se complica aún más con Rails 3.1, lo que hace que Sass y CoffeeScript sean todas las cosas por defecto, por lo que un novato total de Rails no solo tiene que aprender Ruby and Rails sino Sass (posiblemente simple si conoce CSS) y CoffeeScript (no es una locura difícil, pero ciertamente lo suficientemente diferente de JavaScript sin procesar) como mínimo para comenzar, además se puede suponer Git. Incluso sin tener en cuenta a RSpec y sus amigos, y la docena o más de gemas con las que generalmente terminarás, son 4 cosas diferentes que debes aprender antes de poder comenzar a escribir aplicaciones Rails. Compare esto con un lenguaje como C # o Java, o incluso PHP, donde su conocimiento de HTML / CSS / JavaScript / SQL no va a cambiar y solo tiene que aprender el lenguaje en sí y quizás los matices del marco.