ruby-on-rails-3 - framework - ruby on rails que es
Diferencias entre las vulnerabilidades y los motores en Ruby On Rails 3 (2)
Railtie probablemente pueda hacer lo que usted describe, pero puede ser más conveniente usar un motor. El motor puede tener su propia configuración y también actúa como una aplicación Rails, ya que le permite incluir el directorio / app con controladores, vistas y modelos de la misma manera que una aplicación Rails normal.
Leí algunos documentos sobre estos argumentos, pero no entendí claramente qué son, cuáles son las diferencias entre ellos y si uno de ellos se ajusta a mis necesidades.
Necesito escribir una aplicación que pueda ser conectada a otra aplicación y quiero incluirla en otras aplicaciones como una gema. Esencialmente necesito un par de modelos, un controlador y sin vistas, más una inicialización, soporte para los parámetros de configuración provenientes de la aplicación de alojamiento y un generador.
¿Estoy en el camino correcto?
¿Qué debería leer para entender cómo hacer eso?
Actualizar:
Se puede encontrar un artículo muy bueno con muchos detalles af here .
Esencialmente:
Railtie es el núcleo de Rails Framework y proporciona varios ganchos para extender Rails y / o modificar el proceso de inicialización.
A Rails :: Engine no es más que un Railtie con algunos inicializadores ya configurados. Y dado que Rails :: Application and Rails :: Plugin son motores, la misma configuración que se describe aquí se puede usar en los tres.
Rails::Engine
hereda toda la funcionalidad de Rails::Railtie
y agrega un poco más ( Engine < Railtie
fuente de Engine < Railtie
[los documentos en la fuente son bastante buenos]).
Básicamente, railtie (== tu clase que hereda de Rails::Railtie
) te brinda todo lo que necesitas para interactuar con los procesos de la aplicación Rails. Y el motor (== tu clase que hereda de Rails::Engine
) es railtie +
algunos inicializadores configurados (con la ayuda del método de
initializer
): hace que la estructura de la carpeta similar a la aplicación Rails del motor se pueda cargar en la aplicación real, de modo queel motor cargará automáticamente
app/models
,app/controllers
,app/helpers
en su aplicación real, cargará rutas desdeconfig/routes.rb
, cargaráconfig/locales/*
regionales desdeconfig/locales/*
, y cargará tareas desdelib/tasks/*
.Puedes ver los inicializadores configurados con este código:
require ''rails/all'' Rails::Railtie.initializers.map(&:name) #=> [] Rails::Engine.initializers.map(&:name) #=> [:set_load_path, :set_autoload_paths, :add_routing_paths, :add_locales, :add_view_paths, :load_environment_config, :append_assets_path, :prepend_helpers_path, :load_config_initializers, :engines_blank_point]
algunos métodos de conveniencia, como
isolate_namespace
.