Подтвердить что ты не робот

Динамически требующие файлы?

Кто-нибудь знает достаточно о Ruby require, чтобы сказать мне, является ли следующий синтаксис действительным:

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

Если да, то require поместите камень в глобальное пространство имен, как это было бы в верхней части файла?

4b9b3361

Ответ 1

Если это так, потребовалось бы место драгоценного камня в глобальное пространство имен как одно и то же требуется в верхней части файла?

Да. require не имеет области видимости, а load делает.

Ответ 2

Да, это абсолютно корректно и работает как ожидалось, потому что требование не ограничено

Требовать вытягивания кода из указанного файла и попытки использовать его на месте - это может означать, что это неразумно, но да, это можно сделать.

Локальная область метода не будет затронута, и любое определение класса и т.д. будет в ожидаемой области