私はRubyが初めてで、C#の世界から来ました。C# では、次のようなことを行うことは合法です。
public class Test
{
public void Method()
{
PrivateMethod();
}
private void PrivateMethod()
{
PrivateStaticMethod();
}
private static void PrivateStaticMethod()
{
}
}
Rubyで同様のことを行うことは可能ですか?
ちょっとしたコンテキスト: 私は Rails アプリを持っています... モデルの 1 つに、いくつかの依存関係を設定するプライベート メソッドがあります。モデルの初期化されたインスタンスを作成するクラス メソッドがあります。従来の理由により、正しく初期化されていないモデルのインスタンスがいくつかあります。同じ初期化ロジックを実行したい「初期化されていない」インスタンスを初期化するインスタンス メソッドを追加しました。重複を避ける方法はありますか?
サンプル:
class MyModel < ActiveRecord::Base
def self.create_instance
model = MyModel.new
model.init_some_dependencies # this fails
model
end
def initialize_instance
// do some other work
other_init
// call private method
init_some_dependencies
end
private
def init_some_dependencies
end
end
プライベート メソッドをプライベート クラス メソッドに変換しようとしましたが、まだエラーが発生します。
class MyModel < ActiveRecord::Base
def self.create_instance
model = MyModel.new
MyModel.init_some_dependencies_class(model)
model
end
def initialize_instance
# do some other work
other_init
# call private method
init_some_dependencies
end
private
def init_some_dependencies
MyModel.init_some_dependencies_class(self) # now this fails with exception
end
def self.init_some_dependencies_class(model)
# do something with model
end
private_class_method :init_some_dependencies_class
end