私はRailsエンジンを開発しているので、既存のものをいくつか見てみました。appそれらの多くが だけでなく、libおよびにもファイルを持っていることに気付きましたvendor。
ホストアプリで置き換え可能なコードをフォルダーに配置する必要があることは明らかですapp(たとえば、モデルがあるapp/user.rb場合、ホストアプリは独自のapp/user.rbファイルを簡単に作成し、エンジンの代わりにこれを使用できます)。
libしかし、いつ に何かを入れなければならないのか、いつvendor? ではvendor、自分のプロジェクトで使用したい他の開発者またはプロジェクトからの「外部」コードのみを配置する必要があり、プロジェクトでlib実際に作業している独自の追加ライブラリを配置する必要があると考えました。しかし、たとえば、なぜ WiceGrid はwice_grid/vendor/assetsディレクトリに何かを入れるのでしょうか? 私には外部コードのようには見えませんが、WiceGrid 用にのみ開発されたコードであるため、libディレクトリに配置する必要がありますか?
アップデート
lib少し実験しているうちに、エンジンの開発中にフォルダー内のすべてのコードがリロードされないことに気付きました(vendorディレクトリの場合も同じだと思います) app。
たとえば、次のようにlib/iq_list_controller.rbいくつかのクラスとインスタンス メソッドを保持ApplicationControllerするファイルがありますengine.rb。
initializer "wice_grid_railtie.configure_rails_initialization" do |app|
ActiveSupport.on_load(:action_controller) do
extend IqList::Controller::ClassMethods
include IqList::Controller::InstanceMethods
end
end
Rubyが適切に見つけられるようにするには、このファイルをどこに配置すればよいですか?