son rails que las instalar gemas ruby-on-rails plugins model gem rails-engines

ruby on rails - rails - Creando una gema que contiene modelos de rieles.



ruby gemfile (2)

He estado leyendo mucho sobre el tema y nada parece cubrir mis necesidades. Lo siento si estoy repitiendo o no estoy seguro de algo que soy nuevo para ruby ​​y rails y nuevo para stackoverflow.

Tengo una aplicación de rieles con mucha infraestructura. Quiero tomar algunos de sus modelos, anidarlos en un espacio de nombres y poner todo eso en una gema rubí para usar en otras aplicaciones de rieles. A mi entender, hay un problema con las rutas de carga para los rieles, ya que son una convención y un problema con la definición de otro motor, ya que tienes dos y se estrellan.

He estado buscando una guía o un tutorial para aprender a hacer esto sin mucha suerte, pero estoy seguro de que hay algo por ahí si alguien puede señalarlo, eso sería maravilloso.

Mis intentos de hacer una gema con un motor falla en colisiones o falta de rieles.

Estoy corriendo rieles 3.2.3 y rubí 1.9.3.


Comience con este manual - http://guides.rubyonrails.org/engines.html

Crea un motor con comand.

$ rails plugin new "EngineName" --mountable

Luego ponga todo lo que necesita, modelos, controladores, etc. en su motor. Generar gema a partir de ella. Añade esta gema a tu MasterApp. Todos los modelos estarán disponibles en el espacio de nombres EngineName.


Sí, puedes crear una gema que contiene modelos e incluirlos en varias aplicaciones de Rails. Esta es un forma de hacerlo:

  • Crear una gema: bundle gem demo_gem

  • Crea o mueve tus modelos a la demo_gem. Prefiero ponerlos en la carpeta lib / de la gema como, por ejemplo, demo_gem / lib / app / models / student.rb .

    module DemoGem class Student < ActiveRecord::Base end end

  • Requiera todos sus modelos en demo_gem / lib / demo_gem.rb

    require "demo_gem/version" require "demo_gem/app/models/student.rb" module DemoGem # Your code goes here... end

  • Incluya la gema en sus aplicaciones de Rails Gemfile (supongo que su código no es de código abierto y no planea publicar la gema):

    gem ''demo_gem'', path: ''../demo_gem''

Ahora puede usar estos modelos en cualquier lugar en la aplicación de varios rieles, solo con DemoGem::Student .

Se supone aquí que está utilizando una base de datos única y que las tablas existen. Sin embargo, puede crear migraciones en la propia gema y copiarlas a la aplicación utilizando los generadores de Rails .