El método llamado `... 'se define aquí

13

Ruby 2.7 acaba de ser lanzado y viene con estas nuevas advertencias para "Separación de argumentos posicionales y de palabras clave" (vea su Publicación de lanzamiento ). Estaba jugando con eso y descubrí que hay otra advertencia, que no entiendo.

Ejemplo:

def multiply(x:, y:)
  x * y
end

args = { x: 2, y: 3 }

multiply(args)

# ./warning.rb:7: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
# ./warning.rb:1: warning: The called method `multiply' is defined here

Creo que la primera advertencia sobre la desaprobación es clara, pero la segunda advertencia The called method `multiply' is defined herees confusa para mí.

¿Qué significa la segunda advertencia? ¿Está relacionado con la primera advertencia?

Ambas advertencias desaparecen al agregar **a la llamada ( multiply(**args)).

lxxxvi
fuente
1
¿Alguien sabe cómo suprimir estas advertencias? Tengo advertencias de obsolescencia escritas en el archivo de registro, pero no afecta a estas. Ejecutar especificaciones es una pesadilla en ruby ​​2.7.0
Carl

Respuestas:

15

¿Qué significa la segunda advertencia? ¿Está relacionado con la primera advertencia?

Hay una sola advertencia con un texto dividido en dos líneas. Literalmente dice: argsdebe convertirse a **args, aquí está la llamada que produjo esta advertencia, aquí está su definición para su conveniencia .

Aleksei Matiushkin
fuente
55
¡Bien gracias! Puede ser que soy solo yo, pero esto es bastante confuso ...
lxxxvi
2
@lxxxvi No eres solo tú. He venido aquí exactamente por lo mismo: si se trata de un mensaje de error, creo que debería ser un mensaje de error.
Jacob
Estoy realmente confundido, veo esta advertencia y no hay nada por encima para i18n.rb, esta es una advertencia de una sola línea, la línea anterior se relaciona con el soporte activo. ¿Qué se supone que debo hacer con esta advertencia? </usr/local/lib/ruby/gems/2.7.0/gems/i18n-1.8.2/lib/i18n.rb:195: advertencia: el método llamado `t 'se define aquí
Hackeron