эластичный бобовый стебель `bundle exec rails c` не может найти гемы, рейк и другие команды могут

Первой точкой, как правило, являются глобальные глобальные перемены - или, точнее, мутирующие или худшие повторные привязки глобальных функций внутри функции, следует избегать как можно больше.

Вторая точка: в Python, «global» на самом деле означает «уровень модуля» - нет глобальных «уровней процесса» (обратите внимание, что это запроектированный выбор, основанный на первом пункте выше)

Третья точка: для вашего общего прецедента ( настройки приложения), «менее злые» способы состоят в том, чтобы все ваши модули использовали систему настроек, вместо того, чтобы «передать параметр функции, которая устанавливает ее как глобальную, поэтому вам не нужно ее передавать», ваши модули просто импортируйте настройки и прочитайте значение параметра (см. параметры django для примера).

Недостатки в том, что 1 / только ваш собственный код может использовать эти настройки, а 2 / делает ваш код зависимым от этих настроек (иногда это может быть PITA).

И, наконец, , учитывая «подробное» имя, я предполагаю, что вы хотите настроить уровень детализации вывода отладки / ошибки вашей программы. Правильный способ сделать это стандартным, переносным и хорошо развязанным способом (который устранит оба недостатка выше для этой функции) состоит в том, что использует пакет регистрации stdlib . Этот пакет предназначен для развязки использования журнала (в коде «library», используя logger.log(level, msg, ...) или один из его ярлыков) из конфигурации ведения журнала (которая является специфичной для приложения / установки). Сначала требуется немного обучения, но из опыта это хорошо проведенное время и на самом деле очень быстро экономит время .

0
задан TDH 19 January 2019 в 16:41
поделиться