0

機能Xを備えたこのフルレールエンジンFooを持っています。

別のエンジンであるエンジンバーを作成したいと思います。これはほとんど同じですが、機能xをyでオーバーライドします。(基本的には同じですが、いくつかのコントローラーアクションとビューの実装が異なります)。

(後でこれをいくつかのマウント可能なエンジンに分割する可能性がありますが、今のところ、これはセットアップになります:エンジンFooを使用するエンジンBarを使用するプロジェクトBaz)

落とし穴がないか知りたいのですが。よく使われる柄ではないですか?この「ある種のエンジン継承」を使用している人は他にいますか?

4

1 に答える 1

1

Ruby OpenClassing はあなたがやりたいことです。例えば、

# in Engine Foo
#   this code creates functionality x

Foo::SomeRubyClass
  # functionality x
  def some_method
    0.10
  end
end


# in Engine Bar
#   this code opens and reevaluates the functionality x in Foo Engine

Foo::SomeRubyClass.class_eval do
  # functionlity x method
  def some_method
    0.05
  end
end

Rails Models/Views/Controllers によるより詳細な説明。 http://edgeguides.rubyonrails.org/engines.html#overriding-models-and-controllers

于 2012-11-18T22:57:20.940 に答える