Si bien es cierto que no se puede acceder a las variables locales definidas en los archivos necesarios, puede acceder a las constantes, y se puede acceder a cualquier cosa almacenada en un objeto que se tiene acceso en ambos contextos. Entonces, hay algunas maneras de compartir información, dependiendo de sus objetivos.
La solución más común es probablemente definir un módulo y poner allí su valor compartido. Como los módulos son constantes, podrá acceder a él en el contexto requerido.
# in welcome.rb
module Messages
WELCOME = "hi there"
end
# in irb
puts Messages::WELCOME # prints out "hi there"
También podría poner el valor dentro de una clase, para casi el mismo efecto. Alternativamente, puede definirlo como una constante en el archivo. Como el contexto predeterminado es un objeto de clase Object, denominado main, también puede definir un método, variable de instancia o variable de clase en main. Todos estos enfoques terminan siendo formas esencialmente diferentes de hacer "variables globales", más o menos, y pueden no ser óptimas para la mayoría de los propósitos. Por otro lado, para proyectos pequeños con ámbitos bien definidos, pueden estar bien.
# in welcome.rb
WELCOME = "hi constant"
@welcome = "hi instance var"
@@welcome = "hi class var"
def welcome
"hi method"
end
# in irb
# These all print out what you would expect.
puts WELCOME
puts @welcome
puts @@welcome
puts welcome
Agradable, como comentario: Se puede tener acceso al 'WELCOME' en el código de John Hyland porque comenzó por * letra * upcase, esto hace que sea una constante. Ruby es interesante. –