Rails でクラス変数 @@ の使用を避けるべきなのはなぜですか? 質問する

Rails でクラス変数 @@ の使用を避けるべきなのはなぜですか? 質問する

Rails でクラス変数 @@ の使用を避けるべきなのはなぜですか? これにはセキュリティ上の抜け穴がありますか。 Rails は初心者なので回答をお願いします。 インスタンス変数をよく使用しています@variable_name。 一度試しました@@variable_name

クラス変数について私が知っているのは、クラス変数はオブジェクト間で共有可能

でも本当に知りたいのはRails でクラス変数 @@ の使用を避けるべきなのはなぜですか?

ベストアンサー1

スレッドセーフではないからです。多くの rails 対応サーバーはマルチスレッドです。つまり、アプリケーションのインスタンスが常に複数実行されていて、ユーザーのリクエストがそれらのインスタンスの 1 つに任意に割り当てられることになります。クラス変数はプロセス間で共有されないため、後続のリクエストではクラス変数が異なる可能性があります。

意図的にシングルスレッド サーバーでアプリを実行できたとしても、リクエスト間でアプリが再起動され、クラス変数が失われないという保証はありません。

クラス変数が提供する機能と同様の機能が必要な場合は、Memcached や Redis などのキー値ストアを検討することを強くお勧めします。

おすすめ記事