
Esta publicación es una traducción de un
artículo del programador Krzysztof Kopidlowski dedicado a explorar los beneficios de Ruby on Rails. El material será de interés principalmente para programadores novatos y solo entonces para profesionales.
Ruby on Rails puede ahorrarte el tiempo que normalmente pasas desarrollando. Solo porque al usar este marco, el código será menor y la funcionalidad seguirá siendo la misma.
Skillbox recomienda: Curso práctico "Profession Web Developer" .
Le recordamos: para todos los lectores de "Habr": un descuento de 10.000 rublos al registrarse en cualquier curso de Skillbox con el código de promoción "Habr".
De Java a Ruby
Para mí, trabajar con Ruby es un verdadero ahorro de tiempo. Puedo concentrarme en métodos y lógica, en lugar de perder el tiempo con mucho código línea por línea. Solía pensar que Java cambia las reglas del juego, pero después de conocer a Ruby on Rails, me impresionó aún más.
Durante aproximadamente un año he estado escribiendo en Java y haciendo desarrollo de backend. Me parece que cualquier programador que trabaje con este lenguaje entenderá de lo que estoy hablando. Suponga que desea escribir un punto final para devolver un archivo .zip. Puede resolver este problema sin ningún problema especial, pero esto requiere cientos de líneas de código.
Pero, ¿y si le digo que se pueden prescindir de unas pocas docenas de líneas?

Este es Ruby, un lenguaje de programación de alto nivel orientado a objetos, dinámico, reflexivo e interpretado. Tiene una implementación de subprocesos múltiples independiente del sistema operativo, una tipificación dinámica fuerte, un recolector de basura y muchas otras características. Ha escrito muchas aplicaciones web, incluidas GitHub y Twitter.
Ruby Reduce Code
Quizás se esté preguntando cómo es generalmente posible reducir la cantidad de código a varias decenas de líneas mientras se conserva la lógica indicada anteriormente. Esto es realmente posible, y todavía no estamos hablando de frameworks, se trata de lenguaje puro.
Por ejemplo, si tiene una matriz y desea aumentar todos los elementos en 2, y luego devolverlos en orden inverso en Java, el código se verá así (usando la interfaz de Lista):
import java.util.*; import java.util.stream.Stream; import static java.util.Collections.reverseOrder; import static java.util.stream.Collectors.toList; public class MyClass { public static void main(String args[]) { List<Integer> list = Stream.of(1, 2, 3) .map(val -> val + 2) .sorted(reverseOrder()) .collect(toList()); list.forEach(System.out::println); } }
Lo mismo en Ruby se vería así:
array = Array.new (5,2)
array.map {| x | x + 2} .reverseLa diferencia es obvia. Y no necesitas importar clases.
Escritura dinámica
Después de asegurarnos de que realmente no puede haber demasiadas líneas de código, podemos pensar en el hecho de que el tipo de variable no se establece en el ejemplo anterior. Esto es cierto: el hecho es que en Ruby todas las variables se escriben dinámicamente.
Si está escribiendo un método que toma dos parámetros, no necesita especificar sus tipos, en su lugar, solo puede enfocarse en la lógica. Resultado: menos código, más calidad y más limpio.
Ruby también tiene muchos métodos patentados que aceleran la codificación. Cuando escribo programas, uso la conversión de Hash a Array, y luego a JSON. ¡En Ruby, puedo ejecutarlo con solo una línea!
Sobre rieles
El framework Ruby más popular es Rails. Proporciona aproximadamente la misma funcionalidad para un lenguaje que Spring para Java. Me gustaría compartir algunos de mis hallazgos que pueden serle útiles.
Todos los puntos finales en un solo lugarUna de las cosas que me gustan de Rails es que solo necesito un archivo para declarar todos mis puntos finales. Siempre puedo usar el comando de terminal $ rake routes para verlos. Esta es una gran opción para proyectos grandes cuando necesita hacer algo basado en lo que ya está escrito.
Además, puede dividir sus puntos finales en grupos. Por ejemplo, cuando tiene un modelo de Usuario, puede establecer las rutas para todos sus miembros para que cada punto final obtenga automáticamente su propio identificador.
No tiene que usar parámetros diferentes para los mismos puntos finales. En Rails, de forma predeterminada, puede pasar cualquier parámetro al punto final y simplemente validar para aquellos que le gustaría usar en el controlador.
def user_params
params.require (: user) .permit (: name ,: apellido ,: birth_date ,: avatar)
finBases de datos de rielesTodas las migraciones se registran aquí en la aplicación, por lo que configurar una base de datos en diferentes dispositivos se reduce a ejecutar un comando: $ bundle rake db: setup. Por lo tanto, simplemente no se necesita un cliente externo para configurar o usar la base de datos.
Y no, la base de datos que creó y transfirió a otro dispositivo no estará vacía: en su aplicación Rails hay un archivo llamado seed.rb en el que puede especificar todos los registros para los diferentes modelos necesarios para que la aplicación funcione. Como resultado, el modelo necesita solo unas pocas líneas de código.
El comando $ bundle rake db: setup tiene tres funciones:
- Crea una base de datos si aún no existe;
- Ejecuta todas las migraciones;
- Introduce todos los datos de origen de su archivo semilla.
El código es realmente limpio: ActiveRecords simplemente escribe los métodos que necesita implementar, no los atributos.
En el marco de Hibernate para Java, debe registrar todos los atributos con anotaciones y luego establecer los atributos que necesita modificar. En este caso, obtienes una gran cantidad de código en la salida.
En Rails, lo mismo ocupa una línea. DB Schema se guarda en el archivo schema.rb, que se crea automáticamente cuando comienza la migración. Y la clase no necesita setters o atributos. Cuando se necesiten estos últimos, será suficiente escribir: Model.attribute, y eso es todo.
Como se mencionó anteriormente, con Rails puede centrarse en la lógica y los métodos de su proyecto, en lugar de en el código.

Conclusión
Ruby on Rails le brinda herramientas poderosas como la escritura dinámica o la eliminación de errores que aceleran el proceso de programación bastante bien.
Si desea tomar un curso sobre desarrollo de aplicaciones web, asegúrese de escribir una pequeña aplicación Rails para comprender cómo funciona. Nunca es demasiado tarde para aprender algo nuevo, incluso si prefiere las herramientas tradicionales.