Una nueva versión de Rails está a la vuelta de la esquina. De momento no hay fecha de lanzamiento confirmada, pero se espera que esté disponible antes de Navidad. Al momento de la publicación de esta publicación, la versión más reciente es 7.0.0.rc1. EY, GitHub, Shopify y Campamento base Todos ejecutan Rails 7 alpha en producción, por lo que podemos esperar que incluso la versión candidata sea estable.
Nuestro objetivo en esta publicación es analizar algunas de las nuevas características y cambios que traerá Rails 7.
¿Hay algo nuevo en Ruby on Rails 7?
Hay algunas características extraordinarias y emocionantes en la última versión de Ruby on Rails. Según el creador de Rails David Hansson, esta versión incluye todo lo que los desarrolladores necesitan para crear una aplicación web moderna. Según Hanson, este lanzamiento es la culminación de muchos años de progreso en cinco áreas diferentes a la vez. Echemos un vistazo a lo que Ruby on Rails 7 tiene para ofrecer.
1. No es necesario Webpack ni Node.
No es necesario que los desarrolladores tengan Webpack y Nodejs para utilizar paquetes npm. Se necesitarían muchos pasos para traducir ES6 y Babel y luego agruparlos. La gema Webpacker se puede utilizar para esta tarea, pero traía consigo un problema adicional y era difícil de modificar.
La gema importmaps-rails ahora permite a los desarrolladores importar mapas. Para actualizar, anclar o desanclar dependencias, puede usar ./bin/importmap en lugar de escribir código para package.json.
Por ejemplo, para instalar date-fns:
$ ./bin/importmap pin fecha-fns
Esto incluirá automáticamente una línea en config/importmap.rb como:
en “date-fns”, a: “https://ga.jspm.io/npm:[email protected]/esm/index.js”
Y, en tu javascript, continúas escribiendo códigos como solías hacerlo.
importar {formatoDistancia, subDías} desde 'fecha-fns'
formatDistance(subDays(nueva fecha(), 3), nueva fecha(), { addSuffix: true })
//=> “hace 3 días”
Al trabajar con esta estructura debes tener esto en cuenta porque lo que escribes no trasciende lo que percibe el navegador. Dado que la mayoría de los navegadores ahora admiten ES6, esto no es un problema. La transformación a JS solo es necesaria para JSK y Typecript.
Por ejemplo, los desarrolladores deben usar webpack, esbuild y rollup si quieren usar React con JSX.
Esto se puede hacer rápidamente con Rail 7. Con cualquiera de las estrategias elegidas, simplemente ejecute el siguiente comando:
$ ./bin/rails javascript:instalar:[esbuild|rollup|webpack]
2. Una capa de base de datos cifrada
Con Rail 7, los desarrolladores pueden cifrar ciertos campos de la base de datos utilizando el método de cifrado en ActiveRecord::Base. Debe escribir el siguiente código después de haber configurado su configuración inicial:
Mensaje de clase <Registro de aplicación
cifra: texto
fin
No hay diferencia entre los atributos cifrados y otros atributos. El marco Rails 7 cifra y descifra automáticamente su base de datos y aplicación.
Sin embargo, si pasa la opción determinista: verdadero al método de cifrado, no podrá consultar la base de datos del campo. Como resultado, el modelo determinista es menos seguro que otros modos, por lo que normalmente se utiliza sólo en emergencias.
3. Consultas asincrónicas
El método load_async ahora está disponible para los desarrolladores al consultar datos. Cuando se realizan varias consultas juntas, se ahorra tiempo. Puede ejecutar lo siguiente usando esto:
def Controlador de publicaciones
índice de definición
@posts = Publicación.load_async
@categorías = Categoría.load_async
fin
fin
Se dispararán dos consultas al mismo tiempo. En otras palabras, si cada consulta tardara 200 ms, el tiempo total para obtener dos resultados sería de 200 ms en lugar de 400 ms.
4. Sólo sería posible ejecutar aplicaciones en modo Zeitwerk.
El modo Zeitwerk de Rail 7 ahora estará disponible para todas las aplicaciones. La dirección ha asegurado que esta transformación será fluida para los desarrolladores. Cargador de código Ruby on Rails Zeitwerk. Permite a los desarrolladores cargar fácilmente módulos y clases desde su proyecto.
Se utiliza para iniciar dependencias de gemas, proyectos, aplicaciones, etc. Los inflectores, las configuraciones y los registradores son únicos para cada cargador. La única diferencia entre el modo Zeitwerk y el clásico es que proporciona una mejor estrategia de carga.
5. Ahora Stimulus y Turbolinks están reemplazando a UJS y Turbolinks
Las aplicaciones Rails 7 ahora vienen con Stimulus y Turbo (de Hotwire) de forma predeterminada. En Hotwire, HTML se envía por cable en lugar de JSON, lo que permite a los desarrolladores crear aplicaciones web con un mínimo de JavaScript.
Como resultado, las páginas se cargan rápidamente, las plantillas se ejecutan simultáneamente en el servidor y los desarrolladores tienen una experiencia de desarrollo productiva. Con Turbo, puede acelerar los cambios de página, optimizar páginas complejas en componentes y transmitir actualizaciones a través de WebSockets.
Hotwire y Turbo son tecnologías híbridas; se pueden integrar en dispositivos iOS y Android. Combinado con Turbo, Stimulus proporciona una solución para crear aplicaciones rápidas y atractivas.
6. Utilice sole para alinear su consulta con un solo registro
Al afirmar que una consulta coincide con un único registro, los desarrolladores ahora pueden usar first o find_by en lugar de sole o find_sole_by.
Producto.dónde([“precio = %?”, precio]).único
# => ActiveRecord::RecordNotFound (si no hay ningún producto con el precio indicado)
# => # (si es un Producto con precio determinado)
# => ActiveRecord::SoleRecordExceeded (si hay más de un Producto con un precio determinado)
usuario.api_keys.find_sole_by (clave: clave)
# como arriba
7. Los archivos generados por secuencias pueden manejarse mediante acciones del controlador.
Al usar send_stream dentro de una acción de controlador, Rail on Ruby 7 agiliza los archivos generados sobre la marcha.
send_stream(nombre de archivo: “subscribers.csv”) hacer |transmitir|
stream.write “dirección_correo electrónico, actualizada_at\n”
@suscriptores.find_each hacer |suscriptor|
stream.write “#{suscriptor.dirección_correo electrónico},#{suscriptor.updated_at}\n”
fin
fin
Cuando se implemente en Heroku, los desarrolladores recibirán una respuesta inmediata/parcial para que sepan que algo está sucediendo.
8. Variantes con nombres
Ruby on Rails 7 admite variantes de nombres mediante ActiveStorage.
Conclusiones
En las notas de la versión de Rails 7, puede encontrar la lista completa de correcciones de errores, características y cambios. Actualmente, no son completos, pero se actualizarán pronto.
Tenga en cuenta que Rails 6.1 ya no recibirá correcciones de errores si todavía está ejecutando Rails 6 o versiones anteriores con la versión final de Rails 7. El EOL para Rails 5.2 también marcará el fin del soporte, ya que ya no recibirá actualizaciones.
¡Diviértete codificando! Contacto RielesCarma ¡para más información!