Rails プロジェクトに、インスタンス変数を設定する Ruby クラスがあるとします。
class Something
def self.objects
@objects ||= begin
# some logic that builds an array, which is ultimately stored in @objects
end
end
end
@objects
複数回設定できる可能性はありますか?begin
1 つのリクエスト中に/上記の間でコードを実行している間に、end
このメソッドが 2 番目のリクエスト中に呼び出される可能性はありますか? これは、Rails サーバー インスタンスがどのようにフォークされるかという問題に帰結するのではないでしょうか。
代わりにMutex
またはスレッド同期を使用する必要がありますか? 例えば:
class Something
def self.objects
return @objects if @objects
Thread.exclusive do
@objects ||= begin
# some logic that builds an array, which is ultimately stored in @objects
end
end
end
end