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 }) }, } } })() Ruby 3.0. Ruby y los métodos de control de la privacidad menos conocidos - 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
2021-01-28
Desarrollo de software

Ruby 3.0. Ruby y los métodos de control de la privacidad menos conocidos

The Codest

Tomasz Szkaradek

Arquitecto de desarrollo

Una de las características más queridas de Ruby es su sintaxis muy flexible. Personalmente, me encanta Ruby por la cantidad de posibilidades que tenemos a la hora de definir clases y sus propiedades, y esto es lo que trataré en este artículo.

Soluciones básicas

Supongamos que estamos utilizando la clase Foo que tiene un método público y un método privado:

clase Foo
  def barra
    :impresionante
  end

  privado

  def baz
    :algo_privado
  end
end

Todo es estupendo, vemos una solución de este tipo en prácticamente todos los proyecto. Ejecutar Foo.new.baz provocará el error NoMethodError (método privado 'baz' llamado para # ) y eso es lo que queríamos hacer. ¿Qué pasa si intentamos cambiar el formato de guardado y añadimos private como prefijo en la definición de la clase?

clase Foo
  def barra
    :impresionante
  end

  private def baz
    :algo_privado
  end
end

Como se puede ver después de ejecutar el código¡funciona de verdad! ¿Por qué podemos introducir la visibilidad del método antes de hacerlo? Porque al definir un método, def devuelve el nombre del método como un símbolo. Esta expresión no es sólo una parte de la sintaxis, sino de facto un método derivado de la clase Módulo y que trata este símbolo como un argumento. Para más información, consulte la documentación en este enlace. Ya que empezó tan fácil con private, vamos a intentar cambiar la visibilidad del método private.

clase Foo
  def barra
    :impresionante
  end

  private def baz
    :algo_privado
  end

  público :baz
end

¿Qué ocurrirá después de ejecutar el código?

irb(main):012:0> Foo.new.baz
=> :algo_privado

¡Éxito! Nuestro método de bases se hizo público porque lo hicimos visible dos veces. Por supuesto, la misma operación se aplica a los módulos.
​
Genial, pero ¿adónde nos lleva?
​
Esta funcionalidad nos aporta mucho porque podemos cambiar libremente la visibilidad de un método al definirlo, o incluso cambiar la visibilidad de los métodos al heredarlos.

Ahora, echemos un vistazo a lo que Ruby 2.7 puede hacer en términos de cambiar la visibilidad de alias y accessors.

clase Foo
  private attr_accessor :impresionante_variable
fin

Desafortunadamente, obtenemos un error ya que el método privado espera symbols y attr_accessor. El código devuelve nil y por lo tanto este método no es compatible con el uso de private en Ruby 2.7. Entonces, ¿cuáles son nuestras opciones?

  1. Podemos utilizar attr_accessor bajo la palabra clave private para que funcione, es decir, obtendremos un error cuando queramos hacer referencia a la variable asombrosa_variableasombrosa_variable método.
clase Foo
  privado

  attr_accessor :impresionante_variable
fin
  1. La segunda opción es ejecutar el método privado en métodos generados por atributo_attr; en este caso, también tenemos que acordarnos de introducir allí el setter.
clase Foo
  attr_accessor :variable_asombrosa

  private :awesome_variable, :awesome_variable=
end

Problemas con el attr_ * no son los únicos obstáculos. Podemos encontrarnos con la misma dificultad cuando queremos crear un alias privado.

clase Foo
  private alias :barra, :barra_impresionante
fin

Ruby 3.0 y nuestro negocio

Afortunadamente, Ruby 3.0 introduce un gran cambio ya que los métodos de visibilidad pueden tomar array como argumento y los métodos alias, attr_ *, pueden reajustar el array con los nombres de los métodos que se han definido. Puedes leer más aquí.

Ahora, veamos algunos ejemplos en el último euba y comprobemos si realmente se han realizado los cambios y cómo podemos utilizarlos.
​
En el primer ejemplo, vamos a utilizar private antes del accessor attr:

clase Foo
  private attr_accessor :impresionante_variable
fin

Tal llamada no causará errores en el análisis sintáctico de la sintaxis y, lo que es importante, el variable_asombrosa yawesome_variable =se convierten en privados.
​
El método alias hará lo mismo ya que ahora también devuelve un símbolo como nombre del nuevo método y lo hace visible.

clase Foo
  private alias :barra, :barra_impresionante
fin

Un hecho interesante es que también podemos profundizar en otros métodos, por ejemplo, el impresionanteel módulo print puede ser llamado entre private y attres importante que dicho método devuelva una matriz con los nombres de los métodos que se encuentran en el lado derecho de la expresión.

clase Módulo
  def impresionante_imprimir(nombres)
    puts nombres
    nombres
  end
end
clase Foo
  private awesome_print attr_reader :awesome_bar
end 

Resumen

Espero que este artículo le resulte útil. En caso de más noticias sobre Ruby 3.0. leer más aquí.

¡Feliz codificación!

Oferta de desarrollador Ruby

Más información:

Cállate y llévate tu dinero #1: Costes ocultos y agilidad real en el proceso de desarrollo de productos

CTO retos - ampliación y crecimiento de productos de software

Artículos relacionados

Desarrollo de software

Crear aplicaciones web preparadas para el futuro: ideas del equipo de expertos de The Codest

Descubra cómo The Codest destaca en la creación de aplicaciones web escalables e interactivas con tecnologías de vanguardia, ofreciendo experiencias de usuario fluidas en todas las plataformas. Descubra cómo nuestra experiencia impulsa la transformación...

EL MEJOR
Desarrollo de software

Las 10 mejores empresas de desarrollo de software de Letonia

Conozca las principales empresas de desarrollo de software de Letonia y sus innovadoras soluciones en nuestro último artículo. Descubra cómo estos líderes tecnológicos pueden ayudarle a mejorar su negocio.

thecodest
Soluciones para empresas y escalas

Fundamentos del desarrollo de software Java: Guía para externalizar con éxito

Explore esta guía esencial sobre el desarrollo de software Java outsourcing con éxito para mejorar la eficiencia, acceder a la experiencia e impulsar el éxito de los proyectos con The Codest.

thecodest
Desarrollo de software

La guía definitiva para subcontratar en Polonia

El auge de las outsourcing en Polonia está impulsado por los avances económicos, educativos y tecnológicos, que fomentan el crecimiento de las TI y un clima favorable a las empresas.

TheCodest
Soluciones para empresas y escalas

Guía completa de herramientas y técnicas de auditoría informática

Las auditorías informáticas garantizan sistemas seguros, eficientes y conformes. Obtenga más información sobre su importancia leyendo el artículo completo.

The Codest
Jakub Jakubowicz CTO y Cofundador

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