Estoy desarrollando un motor de rieles, y por eso me he tomado algunas miradas sobre los ya existentes. Me di cuenta de que muchos de ellos tienen archivos en app
, sino también en lib
y vendor
.Rieles Motores: Al poner el código en la aplicación, cuando en lib, y cuando en la carpeta de proveedor?
Es claro para mí que debo poner cualquier código que debe ser reemplazada por la aplicación host en la carpeta app
(por ejemplo, al tener un modelo app/user.rb
, la aplicación host puede fácilmente tener su propio archivo app/user.rb
y utilizar éste en lugar de el del motor uno).
Pero no estoy seguro, cuando tengo que poner cosas en lib
, y cuando en vendor
? Pensé que en el vendor
, solo debería poner el código "externo" de otros desarrolladores o proyectos, que quiero usar en mi proyecto, y en el lib
puse mis propias bibliotecas adicionales en las que estoy trabajando en el proyecto. Pero, ¿por qué, por ejemplo, WiceGrid coloca cosas en su directorio wice_grid/vendor/assets? No se parece a mí como código externo, pero el código que se desarrolla sólo para WiceGrid y por lo tanto debe estar en el directorio lib
?
actualización
Al experimentar un poco, me di cuenta de que todo el código en la carpeta lib
no se vuelve a cargar mientras se desarrolla el motor (supongo que la misma es el caso para el directorio vendor
), por lo que debe poner en una carpeta dentro de app
, pero ¿dónde exactamente?
Por ejemplo, tengo un archivo lib/iq_list_controller.rb
que contiene algunos métodos de clase e instancia para ApplicationController
la que mezclo en ella en engine.rb
así:
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
¿Dónde debo poner este fichero para que Rubí se encuentra correctamente?