私は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が適切に見つけられるようにするには、このファイルをどこに配置すればよいですか?