Начальный контекст выполнения Ruby-программы - это объект, который является экземпляром класса Object.Если вы попытаетесь запросить объект с помощью inspect или p, он просто вернет "main", как указано здесь
Установка значений, таких как @blah, создаст переменные экземпляра для этого объекта верхнего уровня.
Следующий короткий фрагмент должен продемонстрировать это.
Проверка контекста просто возвращает main
, это Object
, точнее экземпляр из Object
class.
Первоначальный список переменных экземпляра представляет собой пустой массив, но после того, как вы задали некоторые с помощью @blah, вы можете увидеть, что они были добавлены в список переменных экземпляра.
В приведенном вами примере на самом деле не нужно использовать переменные экземпляра, локальные переменные были бы в порядке.
p self
puts self.class
puts instance_of? Object
puts "instance variables = #{self.instance_variables}"
@db_host = "localhost"
@db_user = "root"
@db_pass = "root"
@db_name = "your_db_name"
puts "instance variables = #{self.instance_variables}"
main
Object
true
instance variables = []
instance variables = [:@db_host, :@db_user, :@db_pass, :@db_name]