He estado desarrollando un nuevo proyecto de rieles por unas semanas, y aunque estoy sorprendido de los increíbles complementos y algunas de las características realmente geniales en los marcos ... también estoy un poco decepcionado. Y estoy preocupado'Gotchas' del ferrocarril y curva de aprendizaje: ¿alguna vez se detendrá?
Creo que cometí un error.
¿Debo continuar, o volver a lo que estaba familiarizado? (Java/primavera)
Parece que a menos que busca "ejemplos simples", buscando en Google para las excepciones a la regla, casos especiales y así sucesivamente realmente obstaculiza la productividad y se está convirtiendo cada vez más en la norma para mí.
La documentación y los ejemplos del sitio principal, los blogs, las grabaciones de pantalla, etc. están casi desactualizados. Por cada 5-10 ejemplos que están por ahí, 1 de ellos es realmente correcto.
Hacer cualquier cosa nueva que debería "funcionar" casi nunca lo hace. Intento y sigo la documentación y ejemplos, pero mis resultados parecen variar y descubro problemas nunca mencionados en la documentación y ejemplos. Esto parece suceder todo el tiempo en realidad.
Mi experiencia con la prueba de CoffeeScript y su integración con Rails fue un desastre. No poder ver cuál es el problema cada vez que se produce un "error del compilador" es más frustrante.
ActiveRelation es realmente impresionante, hasta que necesite realizar una consulta que una las 7 tablas. Entonces comienza a descomponerse. Creo que es posible que la consulta de combinación de 7 tablas realizada en Hibernate sea más rápida y finalizada de manera confiable la primera vez que la aprende.
Las pruebas son realmente muy difíciles en Rails. Simplemente hay demasiada "magia" pasando. Como Ruby es dinámico, no tengo idea de a qué debo llamar para probar algo de manera adecuada. Siempre parece haber excepciones a la regla.
Por ejemplo, Devise funciona como es de esperar ... hasta que quieras probar Devise en helpers. Simplemente no funcionará, por lo que debe inventar los métodos generados por Devise en sus pruebas para que las pruebas pasen. No necesita hacer esto para los controladores.
Hay algunos blogs que enseñan cómo probar usando Rails, pero son extremadamente triviales y no muy útiles. Algunos de ellos son simplemente malos en realidad. Descubrí cómo hacer validaciones efectivas de pruebas de una manera muy superior a muchos de los blogs que encontré, por ejemplo. Solo descubro que a menudo soy solo cuando se trata de las pruebas.
¿Por qué las imágenes y las hojas de estilo no funcionan correctamente cuando se cambia a producción? Esto es una locura. Toneladas de personas preguntan esto si lo googlean ... pero el marco no "solo funciona".
Tengo miedo a la muerte para implementar esta aplicación con el tiempo. La versión de producción no parece funcionar como la versión de desarrollo. De miedo.
Por alguna razón, después de agregar jquery-rails y idear, el token de autenticación no se pasaba durante las solicitudes ajax. Tuve que agregar las 4 líneas de código javascript para hacerlo funcionar. Esto me tomó 5 horas. En Java, debido a que tienes las sesiones adecuadas, ni siquiera necesitas pensar en este tipo de cosas.
Las pruebas se ejecutan muy despacio.Tengo alrededor de 780 pruebas, y ya lleva mucho más tiempo que un proyecto de Java que tiene 1800 pruebas.
La prueba de la aplicación en el navegador es muy lenta. Se tarda aproximadamente un cuarto de segundo en renderizar algunas de las páginas ... ¡y ni siquiera hay tanta acción ORM en marcha! Incluso para las páginas con 1 consulta de base de datos, tarda de 100 a 200 milisegundos. Esto es Loco.
La documentación a menudo está desactualizada. Por ejemplo, tratar de anular las cosas en Devise fue un dolor porque la documentación realmente me dijo que hiciera algo incorrecto. Solo después de horas de googlear y esperar 48 horas en otro foro pude hacer que alguien me dijera lo que tenía que hacer. Todo lo que quería hacer era hacer que el formulario de inicio de sesión rechazara a un usuario donde User.enabled era falso. Eso es. Resulta que, estaba anulando "activo"? en lugar de "active_for_authentication?" - que fue un error en el RDoc.
El ORM se comporta de maneras realmente extrañas que no son intuitivas en absoluto. Las inserciones/actualizaciones funcionan de manera diferente cuando se asocian objetos nuevos. Tampoco cae en cascada como lo haría Hibernate ... ¿qué me hace sospechar que no está rastreando objetos sucios? Si es ... ¿por qué no está configurado en cascada de forma predeterminada? Cosas como esta no son buenas por defecto. ¿No se supone que Rails es genial con buenos incumplimientos?
Después de 2 semanas, el número de "atrapados" realmente no ha disminuido. Estoy realmente preocupado y asustado. Sé que Java no es inmune a las complicaciones y los problemas, pero generalmente tuve problemas unas 2-3 veces al mes, no 30 en una semana.
Casi estoy pensando que la falta de agilidad cuando se usa Java/Spring no es una gran carga ahora cuando se considera cuán estable, rápida y predecible es la plataforma. Tal vez escribas un poco más de código, pero sabes exactamente lo que está pasando ... en realidad nunca lidias con fallas silenciosas ... y las cosas tienden a funcionar mucho más confiablemente.
Estoy empezando a cuestionar el uso de Rails para este nuevo proyecto.
¿Debo detener o debo seguir adelante? ¿Es un error? ¿Alguna vez se tomaron en serio los rieles? No lo sé. Solo estoy asustado y preocupado de que las trampas y los problemas no se detengan nunca :(No es porque no entiendo los conceptos ... Los entiendo muy bien. Rails funciona muy bien para cosas simples ... pero cada vez Quiero hacer algo "más complejo", me encuentro con problemas. A veces las cosas simples que deberían "funcionar" en realidad no funcionan. Esto es realmente desmoralizador. Porque es tan "mágico" (sin mencionar "silencioso") , Estoy en la oscuridad sobre cómo solucionarlo. –
Su pregunta simplemente suena como falta de experiencia. Estoy seguro de que me encontraría con tantos problemas si traté de programar en Java. – DGM
Puede argumentar la falta de experiencia es la causa de encontrar problemas en cualquier cosa que hagas, ni siquiera cosas relacionadas con la programación. Creo que la documentación debería ser más precisa, esto solucionaría muchos problemas. Además, no deberías tener que buscar en Internet Descubre cómo hacer algo. Es como que derrota a la pu propósito de obtener beneficios de productividad. Estoy pensando que a menos que planee usar los rieles por más de un año, probablemente no valga la pena cambiar una plataforma si solo planeaba gastar 2 meses para hacer un nuevo proyecto. –