Хотя верно, что вы не можете получить доступ к локальным переменным, определенным в требуемых файлах, вы можете получить доступ к константам и получить доступ ко всему, что хранится в объекте, к которому у вас есть доступ в обоих контекстах. Итак, есть несколько способов обмена информацией, в зависимости от ваших целей.
Наиболее распространенным решением, вероятно, является определение модуля и размещение вашего общего значения там. Поскольку модули являются константами, вы сможете получить к ним доступ в нужном контексте.
# in welcome.rb
module Messages
WELCOME = "hi there"
end
# in irb
puts Messages::WELCOME # prints out "hi there"
Вы также можете поместить значение в класс, чтобы получить тот же эффект. Кроме того, вы можете просто определить его как константу в файле. Поскольку контекст по умолчанию - это объект класса Object, называемый main, вы также можете определить метод, переменную экземпляра или переменную класса на main. Все эти подходы в конечном итоге представляют собой существенно разные способы создания «глобальных переменных» более или менее и могут быть неоптимальными для большинства целей. С другой стороны, для небольших проектов с очень четко определенными областями действия они могут подойти.
# 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