ENV
не метод, а константа:
> defined? ENV
=> "constant"
Вы можете переназначить его любому объекту, который вам нужен, даже строке (принимая предупреждение):
ENV = "asd"
(pry):27: warning: already initialized constant ENV
=> "asd"
Таким образом, вы, вероятно, могли бы создать объект, который бы реализовал метод []
описанным вами способом, и делегировать другие из них ENV
.
Хотя это довольно рискованно.Я бы предпочел добавить пользовательский класс, который переносит ENV
и доступ к переменным среды через этот класс:
класс Env def self.get # get from DB или ENV end end