Это из-за недостатка дизайна?
Дизайн ... недостаток ?Это дизайнерское благо, дизайнерское благо, дизайнерские достоинства, все, кроме недостатков!Глобальные переменные плохие , и они особенно плохие в веб-приложениях.
Смысл использования глобальных переменных заключается в сохранении и изменении " global"состояние ».Он хорошо работает в простых однопоточных скриптах (нет, не хорошо, он работает ужасно , но, тем не менее, работает), но в веб-приложениях он просто не работает.Большинство веб-приложений используют параллельные бэкэнды: несколько экземпляров сервера, которые отвечают на запросы через общий прокси-сервер и балансировщик нагрузки.Если вы изменяете глобальную переменную, она изменяется только в одном экземпляров сервера.По сути, переменная со знаком доллара больше не является глобальной , когда вы пишете веб-приложение с рельсами.
Однако глобальная константа все еще работает, поскольку они являются константами, они не меняйте , и иметь несколько экземпляров на разных серверах - это нормально, потому что они всегда будут равны там.
Чтобы сохранить глобальное состояние mutable , вы должныиспользуйте более сложные инструменты, такие как базы данных (SQL и noSQL; ActiveRecord - очень хороший способ получить доступ к БД, используйте его!), кеш-серверы (memcached), даже простые файлы (в редких случаях они полезны)!Но глобальные переменные просто не работают.