window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', versión: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster ya existe') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() El papel de Rack en el ecosistema Ruby - The Codest
The Codest
  • Quiénes somos
  • Servicios
    • Desarrollo de software
      • Desarrollo Frontend
      • Desarrollo backend
    • Staff Augmentation
      • Desarrolladores frontales
      • Desarrolladores de backend
      • Ingenieros de datos
      • Ingenieros de la nube
      • Ingenieros de control de calidad
      • Otros
    • Asesoramiento
      • Auditoría y consultoría
  • Industrias
    • Fintech y Banca
    • E-commerce
    • Adtech
    • Tecnología sanitaria
    • Fabricación
    • Logística
    • Automoción
    • IOT
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • Nuestro equipo
  • Case Studies
  • Saber cómo
    • Blog
    • Meetups
    • Seminarios en línea
    • Recursos
Carreras profesionales Póngase en contacto
  • Quiénes somos
  • Servicios
    • Desarrollo de software
      • Desarrollo Frontend
      • Desarrollo backend
    • Staff Augmentation
      • Desarrolladores frontales
      • Desarrolladores de backend
      • Ingenieros de datos
      • Ingenieros de la nube
      • Ingenieros de control de calidad
      • Otros
    • Asesoramiento
      • Auditoría y consultoría
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • Nuestro equipo
  • Case Studies
  • Saber cómo
    • Blog
    • Meetups
    • Seminarios en línea
    • Recursos
Carreras profesionales Póngase en contacto
Flecha atrás VOLVER
2022-08-25
Desarrollo de software

El papel de Rack en el ecosistema Ruby

Nicolas Nisoria

Aprenda más sobre el papel del rack en el ecosistema de Ruby de la mano de nuestro experto y mejore sus habilidades con Ruby.

Mientras trabajaba con Marcos web Ruby es habitual dar las cosas por sentadas. Sabemos que el framework gestionará las peticiones HTTP y ejecutará la lógica del middleware por nosotros. A medida que nos volvemos más curiosos empezamos a preguntarnos qué hay entre bastidores, ahí es donde empezamos a oír hablar de Rack.

¿Qué es la estantería?

En proyecto se describe como "Una interfaz modular Ruby para servidores web". Rack es la interfaz que nos permite crear aplicaciones web unificando la API para servidores web, frameworks web y middleware.

esquema rack ruby

Como se describe en la imagen anterior, Rack actúa como intermediario entre nuestra Aplicación Web y el Servidor de Aplicaciones, envuelve las peticiones HTTP en el más simple
manera posible.

Aplicación en bastidor

Una aplicación Rack es un objeto Ruby (no una clase) que responde a llame a. Toma exactamente un argumento, el medio ambiente y devuelve un array no congelado de
exactamente tres valores:

  • En estado,
  • el cabeceras,
  • y el cuerpo.

    Encontrará las especificaciones detalladas de una aplicación Rack aquí.

require 'rack

clase RackApp
  def call(env)
        estado = 200
        headers = { 'Content-Type' => 'text/html' }
        body = ['<h1>Mi aplicación Rack<h1>']

    [status, headers, body]
  end
fin

Rack::Manejador

Los manejadores conectan servidores web con Rack. Rack incluye Handlers para Thin, WEBrick,FastCGI, CGI, SCGI y LiteSpeed. Cada servidor de aplicaciones compatible con Rack debe
proporcionan un manejador para crear la conexión (Puma tiene su propio manejador).Los manejadores normalmente se activan llamando a MyHandler.run(myapp). Se puede pasar un segundo hash opcional para incluir la configuración específica del servidor.

Uso del servidor de aplicaciones Thin

Rack::Handler::Thin.run(app)

El archivo por defecto para añadir la configuración es config.ru y puede ejecutarlo utilizando rackup en su consola.

Middleware de bastidor

Rack nos permite crear aplicaciones middleware (aplicaciones entre nuestra aplicación web principal y el servidor de aplicaciones). Estas aplicaciones middleware se encadenan y ejecutan secuencialmente.

Rack Middleware debe implementar todas las especificaciones de un Aplicación en bastidor y cumplir los siguientes puntos:

  • Debe ser una clase,
  • tienen un inicializador que sólo recibe un parámetro (la aplicación principal),
  • y llamar al siguiente middleware o a la aplicación.
clase RackMiddleware
def initialize(app)
@app = app
end
def call(env)
@app.call(env)
end
fin

Del bastidor a la práctica

Ahora que sabemos lo básico, estamos listos para crear nuestra primera Aplicación Rack con Rack Middleware y ejecutarla usando Puma (Servidor de Aplicaciones).

Instalar las dependencias

Asegúrese de tener la estante gema y el puma gema instalada.

gem install rack
gem install puma

Crear el archivo de configuración

En primer lugar, tenemos que crear un archivo llamado config.ru y este archivo hará uso de
el DSL Rack::Builder para ejecutar la aplicación y añadir el middleware.

Añadir la aplicación Rack

Dentro del config.ru añadiremos la aplicación Rack sencilla que definimos en
las secciones anteriores.

# config.ru

clase RackApp
  def call(env)
    estado = 200
    headers = { 'Content-Type' =&gt; 'text/html' }
    body = ['<h1>Mi aplicación Rack<h1>']

    [status, headers, body]
  end
fin

Añadir el middleware Rack

Aquí haremos una pequeña modificación a nuestro simple middleware y ahora añadirá el software del servidor a nuestro cuerpo HTML después de ser ejecutado.

# config.ru

clase RackMiddleware
  def initialize(app)
    @app = app
  end

  def call(env)
    status, headers, body = @app.call(env)

    body << env['SERVIDOR_SOFTWARE']

    [estado, cabeceras, cuerpo]
  end
end

Ejecutar el servidor de aplicaciones

Como último paso, ejecutaremos el servidor y veremos nuestra aplicación funcionando. Nuestro config.ru tendrá el siguiente aspecto:

# config.ru

clase RackApp
  def call(env)
    estado = 200
    headers = { 'Content-Type' =&gt; 'text/html' }
    body = ['<h1>Mi aplicación Rack<h1>']

    [status, headers, body]
  end
fin

clase RackMiddleware
  def initialize(app)
    @app = app
  end

  def call(env)
    status, headers, body = @app.call(env)

    cuerpo <&lt; env[&#039;SERVIDOR_SOFTWARE&#039;]

    [estado, cabeceras, cuerpo]
  end
end

use RackMiddleware
ejecutar RackApp.new

En las últimas líneas, especificamos el middleware utilizando utilice y ejecutamos la aplicación utilizando correr.Estamos listos para ejecutar rackup en nuestra consola y veremos el servidor ejecutándose. Podemos comprobar el puerto donde se está ejecutando nuestra aplicación y deberíamos ver algo como esto después de acceder a él:

servidor rack texto

Conclusiones

A veces es bueno volver a lo básico y conocer los entresijos de la tecnología con la que trabajamos. Aprender Rack nos da una visión clara de la arquitectura y nos revela la "magia" que hay detrás de la Marcos Web Ruby.

bandera de cooperación

Artículos relacionados

Desarrollo de software

GraphQL Ruby. ¿Y el rendimiento?

GraphQL, como cualquier tecnología, tiene sus problemas, algunos de ellos resultan directamente de la arquitectura y otros son idénticos a los que vemos en cualquier otra aplicación. Sin embargo, las soluciones...

The Codest
Tomasz Szkaradek Arquitecto de desarrollo
Desarrollo de software

Una sencilla aplicación Ruby desde cero con Active Record

MVC es un patrón de diseño que divide las responsabilidades de una aplicación para que sea más fácil moverse por ella. Rails sigue este patrón de diseño por convención.

The Codest
Damian Watroba Software Engineer
E-commerce

¿Es Ruby on Rails una buena tecnología para crear un MVP?

Un producto mínimo viable (MVP) es uno de los principios de la metodología Lean Startup. Su objetivo es ayudar a los emprendedores a iniciar el proceso de aprendizaje tan pronto como...

Nicolas Nisoria

Suscríbase a nuestra base de conocimientos y manténgase al día de la experiencia del sector informático.

    Quiénes somos

    The Codest - Empresa internacional de desarrollo de software con centros tecnológicos en Polonia.

    Reino Unido - Sede central

    • Oficina 303B, 182-184 High Street North E6 2JA
      Londres, Inglaterra

    Polonia - Centros tecnológicos locales

    • Parque de oficinas Fabryczna, Aleja
      Pokoju 18, 31-564 Cracovia
    • Embajada del Cerebro, Konstruktorska
      11, 02-673 Varsovia, Polonia

      The Codest

    • Inicio
    • Quiénes somos
    • Servicios
    • Case Studies
    • Saber cómo
    • Carreras profesionales
    • Diccionario

      Servicios

    • Asesoramiento
    • Desarrollo de software
    • Desarrollo backend
    • Desarrollo Frontend
    • Staff Augmentation
    • Desarrolladores de backend
    • Ingenieros de la nube
    • Ingenieros de datos
    • Otros
    • Ingenieros de control de calidad

      Recursos

    • Hechos y mitos sobre la cooperación con un socio externo de desarrollo de software
    • De EE.UU. a Europa: ¿Por qué las startups estadounidenses deciden trasladarse a Europa?
    • Comparación de los polos de desarrollo de Tech Offshore: Tech Offshore Europa (Polonia), ASEAN (Filipinas), Eurasia (Turquía)
    • ¿Cuáles son los principales retos de los CTO y los CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Condiciones de uso del sitio web

    Copyright © 2025 por The Codest. Todos los derechos reservados.

    es_ESSpanish
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean nl_NLDutch etEstonian elGreek es_ESSpanish