20 votes

Demander dynamiquement des fichiers ?

Est-ce que quelqu'un en sait assez sur Ruby require pour me dire si la syntaxe suivante est valide :

class Something

  def initialize(mode)
     case mode
     when :one then require 'some_gem'
     when :two then require 'other_gem'
     end
  end

end

s = Something.new

Si c'est le cas, est-ce que le require placer la gemme dans l'espace de nom global comme elle le ferait en haut du fichier ?

17voto

Simone Carletti Points 77653

Si c'est le cas, est-ce que l'exigence de placer la gemme dans l'espace de nom global comme le même require en haut du fichier ?

Oui. require n'a pas de portée, tandis que load fait.

6voto

Chris McCauley Points 9764

Oui, c'est parfaitement valide et fonctionne comme prévu parce que require n'est pas scopé.

Require extrait le code du fichier spécifié et tente de l'utiliser à la place - cela peut signifier que ce n'est pas raisonnable de le faire, mais oui, c'est possible.

La portée de la méthode locale ne serait pas affectée et toute définition de classe, etc. serait à la portée attendue.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X