respuesta de Michael parece resolver su pregunta ... todavía, leí la pregunta un poco diferente y descubrí algo realmente bueno que pensé que valía la pena compartir.
Entendí su pregunta como: "¿Qué hago si quiero requerir dos módulos del mismo nombre?", Es decir, ¿cómo podría alias si requerir ambos resultaría en un conflicto de espacio de nombres? Porque, en lo que respecta a mi comprensión de la 'importación ... como ...' de Python, también resuelve ese tipo de problemas. Un ejemplo en Ruby:
#file a.rb
module A
def self.greet
puts 'A'
end
end
#file b.rb
module A
def self.greet
puts 'other A'
end
end
Ahora bien, si me gustaría hacer esto en un tercer archivo:
require_relative 'a'
require_relative 'b'
A.greet # => other A
la primera A sería completamente anulado por la A en b.rb. Usar el truco de Michael tampoco ayudará:
require_relative 'a'
TMP_A = A
A.greet # => A
TMP_A.greet # => A
require_relative 'b'
TMP_A2 = A
A.greet # => other A
TMP_A2.greet # => other A
TMP_A.greet # => other A :(
Muy mal. Entonces pensé, bien, en Ruby está el omnipresente dup
para hacer un clon de básicamente todo y sin demasiada esperanza que acaba de escribir esto y volvió a ejecutar el programa:
require_relative 'a'
TMP_A = A.dup
A.greet # => A
TMP_A.greet # => A
require_relative 'b'
TMP_A2 = A
A.greet # => other A
TMP_A2.greet # => other A
TMP_A.greet # => A :P
Eso hizo totalmente mi día, espero que ustedes aprecian tanto como bien. Ahora que lo pienso, tiene sentido, un módulo es un objeto como cualquier otro después de todo, entonces ¿por qué no debería funcionar dup
?
'require' y' include' son muy diferentes en ruby. No son intercambiables entre sí. – x1a4