Почему мы должны избегать использования переменных класса @@ в rails? - PullRequest
23 голосов
/ 22 февраля 2012

Почему мы не должны использовать переменные класса @@ в rails? Есть ли какие-либо лазейки безопасности с этим. Пожалуйста, ответьте, как я новичок с рельсами. и я много использую переменную экземпляра @variable_name. Я пробовал один раз @@variable_name.

Я знаю только о переменной класса, Переменная класса может быть разделена между объектами

Но мне бы очень хотелось знать Почему бы нам не использовать переменные класса @@ в rails?

1 Ответ

46 голосов
/ 22 февраля 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...