Obtenga más beneficios de las consultas en Rails usando Bullet en solo 3 pasos

¿Alguna vez has abierto un armario y todo su contenido se te ha caído encima? En el entorno de programación, esto se denomina "código espagueti". Este es el tipo de códigos que están tan confusos que tan pronto como haces un pequeño cambio, todo comienza a desmoronarse. Por mucho que sea importante escribir buenos códigos, es igualmente importante mantenerlos limpios. Pero cuando se desarrolla una aplicación a gran escala, resulta difícil mantener los códigos limpios y organizados. En este artículo, leerá para sacar más provecho de las consultas en Rails usando Bullet en solo 3 pasos. Para proyectos a gran escala con complejidad adicional, la refactorización manual de código se convierte en un gran riesgo y requiere mucho tiempo. Por ello, se recomienda utilizar herramientas de terceros como Bullet Gem para el mantenimiento, seguridad y optimización de los códigos. El complemento Bullet, desarrollado por Richard Huang para Ruby on Rails, se utilizó por primera vez en 2009. Y desde entonces, ha demostrado ser una joya poderosa que ayuda a monitorear las aplicaciones Ruby on Rails para mejorar el rendimiento. Bullet Gem ayuda a reducir la cantidad de consultas que realiza una aplicación. También ayuda a encontrar N+1 consultas en la aplicación durante el modo de desarrollo mostrando las notificaciones en el navegador. imagen_bullet_gem N+1 El problema de consulta es una situación en la que el desarrollador realiza llamadas adicionales a la base de datos cuando quiere obtener datos asociados específicos una y otra vez. Por ejemplo,
2.2.1 :005 > Mensaje.todos.cada uno {|mensaje| mensaje.conversación.remitente_id}
Este ejemplo obtiene todos los mensajes, luego itera cada uno de esos registros e intenta obtener una conversación de mensajes desde la base de datos. La solución a este problema es el complemento Bullet, que ayuda a monitorear las consultas de la aplicación. Notifica cualquier escenario N+1 y las cargas ansiosas no utilizadas. Otra solución común para esto es utilizar métodos de carga ansiosos: precarga, incluye, ansioso_carga. Ejemplos de los siguientes métodos: -
2.2.1 :007 > Mensaje.incluye(:conversación).referencias(:conversaciones).cada uno { |mensaje| mensaje.conversación.sender_id } 2.2.1 :008 > Mensaje.eager_load(:conversación).cada uno { |mensaje| mensaje.conversación.sender_id } 2.2.1 :009 > Mensaje.precarga(:conversación).all.each { |mensaje| message.conversation.sender_id } La carga ansiosa es la solución al problema de la consulta N+1, lo que garantiza que no terminemos ejecutando consultas innecesarias mientras recorremos un objeto.

Uso y configuración de Bullet Gem: 

El siguiente ejemplo muestra dos modelos; Mensaje y Conversación, en el que un Mensaje consta de muchas Conversaciones. El fragmento de código debe ser: -
En app/controllers/messages_controller.rb clase MessagesController &lt; ApplicationController def index @messages = Message.all end end En app/views/messages/index.html.erb <h1>Mensajes</h1> <% @messages.each do |message| %> <%message.conversations.each do |conversation|%> <ul class="”message_link”"> <li><%=link_to conversation.sender_id, conversation_path(conversation)%></li> </ul> <%end%> <% end %>
Básicamente, Bullet gem ayuda a resolver el problema n+1 en la aplicación Rails.

Obtenga más beneficios de las consultas en Rails usando Bullet en solo 3 pasos

Paso 1: – Agregue la gema Bullet al archivo gem y ejecute la instalación del paquete.
# Para la gema de optimización de código 'bullet', grupo: [:desarrollo,:prueba]
La gema solo debe usarse en el entorno de desarrollo, ya que no querrás que los usuarios de la aplicación reciban alertas sobre los problemas de consulta N+1. Paso 2: – La viñeta debe estar habilitada en la aplicación. Simplemente agregar la gema de bala no notificará las consultas incorrectas. La configuración se realiza en config/environments/development.rb.
config.after_initialize do Bullet.enable = true Bullet.alert = true Bullet.bullet_logger = true Bullet.console = true Bullet.rails_logger = true Bullet.unused_eager_loading_enable = false end Bullet.enable: habilita la gema Bullet, de lo contrario no haces nada Bullet.alert: muestra una alerta de JavaScript en el navegador Bullet.bullet_logger: inicia sesión en el archivo de registro de Bullet (Rails.root/log/bullet.log) Bullet.rails_logger: agrega advertencias directamente al registro de Rails
Paso 3: reinicie el servidor. Después del paso 2, veríamos una ventana emergente de alerta de JavaScript en el navegador con la consulta N+1 detectada. La alerta contendría el archivo que contiene el problema y las sugerencias sobre lo que se podría hacer para solucionar el problema. En Controlador,
clase MessagesController < ApplicationController def índice @messages = Message.includes(:conversaciones) fin fin
Referencias: - ENLACE DE GITHUB: – https://github.com/flyerhzm/bullet Nuestros desarrolladores están bien versados en hacer todo tipo de Trabajo de desarrollo de Ruby on Rails. y manejo de cualquier tipo de proyecto. Contáctenos para saber más sobre nuestras habilidades de desarrollo y los proyectos que podemos manejar.

Suscríbete para recibir las últimas actualizaciones

Artículos Relacionados

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

es_ESSpanish