ruby / ruby/ipaddr

IPAddr#mask method accepts arguments other than integers.

Ouverte
#94 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
Ruby
Étoiles
82
Forks
42
Merge moyen
2 h 24 min
PR mergées (30 j)
3

Description

IPAddr#mask method expects an integer argument, but it accepts non-integer values (such as floats or arrays) if passed.

ip = IPAddr.new('1.2.3.4')

p ip.mask(0.1)
# => #<IPAddr: IPv4:0.0.0.0/128.0.0.0>
p ip.mask(1.2)
# => #<IPAddr: IPv4:0.0.0.0/192.0.0.0>
p ip.mask(11.3)
# => #<IPAddr: IPv4:1.0.0.0/255.240.0.0>
p ip.mask([])
# => `mask!': undefined method `<' for []:Array (NoMethodError)

So, I think it is better to restrict the arguments of this method to integers and throw an exception if they are not integers.
Like this.

ip = IPAddr.new('1.2.3.4')

p ip.mask(0.1)
# => `mask!': invalid mask 0.1 (IPAddr::InvalidPrefixError)

I'm currently implementing this improvement and want to submit a pull request as a contribute to this repo.
Would this be acceptable?

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par la méthode IPAddr#mask et reproduisez les exemples de float et d’array de l’issue. La modification est terminée lorsque les arguments non entiers lèvent IPAddr::InvalidPrefixError, tandis que les masques entiers continuent de fonctionner comme prévu.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
ruby
Domaine
networking
Type d'issue
Bug
Difficulté
2/5
Temps estimé
1-3 heures
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.