私は現在、すべてのオブジェクトが "同じ" inital値のインスタンス変数を使用しており、私はこの問題のみを読んでいるという問題に直面しています。Ruby/Railsのクラス変数はいつinitilal化されますか?
def initialize
@available_ids = read_only_value
end
しかし、ここでは難しいことがあります。この「read_only_value」はAPIから取得されます。簡単にするために、値がintの配列で、月に1回変更されると仮定しましょう。
しかし、オブジェクトを作成するたびに値を取得することでAPIをDoSしたくありません。代わりにクラス変数を使用するとどうなりますか?
class Foo
@@available_ids = read_only_value
def initialize
@available_ids = @@available_ids //weird but let's go with it
end
end
は私が...変数が初期化される一度それが唯一の実行だから、これはAPIをスパムの問題を解決します
しかしこれが起こるんと仮定しますか? Railsアプリケーションを起動するとき、最初のオブジェクトを作成するとき?更新されますか?値は月に一度変わるので、どのように更新を入手できますか?
PS:IDをデータベースに保存し、idsをしばらくまたは必要に応じて一度チェックすることをお勧めします。
この回答は私の問題を解決しますが、@ mudasobwaが私の質問に最初に答えました。私は彼の答えを受け入れるでしょう。とにかくありがとう! –
@ 0lli.rocksこれはF1トーナメントではなく、競争条件は避けるべきです。 _this_答えがあなたの問題を解決するなら、_this_答えは正しいとマークされるべきです。してください。 – mudasobwa
@mudasobwaおそらくあなたは私のコメントを誤解していました。私の元々の質問は「変数はいつ初期化されたのですか?」でした。 Stefanのこの答えは、この質問に全く答えません。私がこれを受け入れると、質問を見つけた人は正しい答えを見つけるためにあなたの答えにスクロールする必要があります。とにかくStefanのこの答えは、私の問題ではなく、私の問題を解決します。 –