J'essaye de redéfinir la méthode File.dirname pour changer d'abord% 20s en espaces. Mais ce qui suit me donne une erreurRedéfinir la méthode File :: dirname ruby
class File
old_dirname = instance_method(:dirname)
define_method(:dirname) { |s|
s = s.gsub("%20"," ")
old_dirname.bind(self).call(s)
}
end
Cette trhows une exception NameError: méthode non définie « dirname » pour la catégorie « Fichier »
Quelle est la bonne façon de le faire?
merci pour l'aide – jrhicks
Ceci n'est * pas * l'équivalent du code @jrhicks posté dans sa question! Ce code pollue l'espace de nom de la métaclasse 'File' avec une méthode résiduelle' File :: old_dirname', alors que le code original dans la question prend soin d'éviter ce problème. –
La discussion sur la portée est entièrement correcte, Chuck, mais Jörg a raison: 'alias_method' peut être" idiomatique ", mais c'est certainement moins sûr que l'approche originale de l'OP. –