Dans ruby, si je fais "require foo", existe-t-il un moyen de déterminer par la suite le nom du module ou des modules définis dans foo.rb?dans ruby, comment puis-je savoir quel module est défini comme le résultat d'un 'load' ou 'require'?
Par exemple, dire que j'ai un fichier nommé Ruby foo.rb qui ressemble à ceci:
# foo.rb
module MyModule
def self.summary
"this does something useful"
end
...
end
Dans un autre script, après que je fais « require foo », comment puis-je déterminer que j'ai maintenant une module nommé MyModule?
Ultime ce que je suis après est de pouvoir faire quelque chose comme ceci:
file = someComputedFileName()
require file
puts "summary of #{file}: #{???::summary}
Pendant que je pouvais me forcer à faire des noms de modules et les noms de fichiers identiques, je préfère ne pas. Je veux un peu plus de liberté pour créer des noms de fichiers courts mais des noms de modules plus expressifs. Cependant, je me garantis que chaque fichier ne définira qu'un seul module (think: plugins).
Ou simplement utiliser des ensembles et examiner ce qui reste après new_modules.subtract (old_modules)? –