我正在开发一个 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 正确找到它?