В ruby, есть ли способ "отменить определение" переменной или константы после ее определения?
В наших средах rails мы определяем одну из трех констант как true
, в зависимости от среды: TESTING
, DEVELOPMENT
или PRODUCTION
. Затем в коде контроллера мы используем defined?
, чтобы увидеть, в какой среде мы находимся, то есть: defined? PRODUCTION
.
Теперь я хочу провести модульное тестирование некоторых из этих специфических для среды действий. Моя первоначальная попытка состояла в том, чтобы просто установить подходящую константу в моем тесте, а затем сбросить их при разборке. Тем не менее, я не могу понять, как сбросить DEVELOPMENT
и PRODUCTION
так, чтобы defined?
вернул false.
Очевидно, что решением было бы просто проверить, является ли соответствующая константа также истинной в дополнение к проверке, определена ли она, но это приведет к необходимости касаться значительного количества существующего кода.
РЕДАКТИРОВАТЬ: Я понимаю, что это определенно НЕ правильный способ сделать вещи. Увы, изменить это нетривиальная задача, поэтому я ищу простой способ просто протестировать то, что там сейчас. Кроме того, мне также любопытен вопрос о языке нижнего уровня о том, возможно ли отменить определение переменной / константы.