0
自分自身を初期化するのに時間がかかるクラスXがあります。私はそのクラスをシングルトンにして、レールのアプリケーションを開始するときに強制的に作成したいと思っています。熱心な初期化を伴うシングルトン
私はシングルトンを作った:
class X @@instance = nil def self.instance if @@instance.nil? @@instance = X.new puts 'CREATING' end return @@instance end private_class_method :new end
問題は、私はこのクラスを使用するたびに、私はログに「作成」を参照のことです。私はinitializers
ディレクトリにクラスの作成を入れようとしましたが、どちらもうまくいきません。
どのようにクラスを使用していますか?私たちに見せてください。 'self.instance'は実際にインスタンスを返すようには見えません。 –
私の間違いを修正しました。これは、モデルの1つのメソッドで使用するユーティリティクラスです。 'require'をモデルに追加して単純に' X.instance.do_something' – jesper
'initializers'ディレクトリに初期化を置くと、クラスへの最初の呼び出しは正しいものでした。新しいオブジェクトは作成されませんでした。しかし、2番目の呼び出しは新しいオブジェクトの作成を引き起こした... – jesper