Подтвердить что ты не робот

Создание драгоценного камня, который содержит модели рельсов

Я много читал по этой теме, и ничто, похоже, не полностью удовлетворяет мои потребности. Прошу прощения, если я повторяю или неясно о чем-то, что я новичок в рубине и рельсах, а также о новом для stackoverflow.

У меня есть существующее приложение rails с большим количеством инфраструктуры. Я хочу взять несколько таких моделей, вложить их в пространство имен и поместить все это в рубиновый камень для использования в других приложениях rails. По моему мнению, существует проблема с путями загрузки для рельсов, поскольку они являются соглашением и проблемой с определением другого движка, так как тогда у вас есть два и они сбой.

Я искал руководство или учебник, чтобы узнать, как это сделать без большой удачи, но я уверен, что там что-то есть, если кто-то может указать мне на это, что было бы замечательно.

Мои попытки создать драгоценный камень с двигателем не удались при столкновении или отсутствии рельсов.

Я запускаю рельсы 3.2.3 и ruby ​​1.9.3.

4b9b3361

Ответ 1

Да, вы можете создать gem, содержащий модели, и включить их в несколько Rails-приложений. Это один из способов сделать это:

  • Создайте драгоценный камень: bundle gem demo_gem

  • Создайте или переместите свои модели в demo_gem. Я предпочитаю помещать их в папку lib/gem, например, demo_gem/lib/app/models/student.rb.

    module DemoGem
      class Student < ActiveRecord::Base
      end
    end
    
  • Требовать все ваши модели в demo_gem/lib/demo_gem.rb

    require "demo_gem/version"
    require "demo_gem/app/models/student.rb"
    module DemoGem
      # Your code goes here...
    end
    
  • Включите жемчужину в свои Rails-приложения Gemfile (я предполагаю, что ваш код не является открытым исходным кодом, и вы не планируете публиковать его):

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

Теперь вы можете использовать эти модели в любом месте в приложении с несколькими рельсами, просто используя DemoGem::Student.

Здесь предполагается, что вы используете единую базу данных и что существуют таблицы. Однако вы можете создавать миграции в самом камне и копировать их в приложение с помощью Rails-генераторов.

Ответ 2

Начните с этого руководства - http://guides.rubyonrails.org/engines.html

Создайте движок с comand

$ rails plugin new "EngineName" --mountable

Вставьте все, что вам нужно, модели, контроллеры e.t.c в ваш движок. Сгенерируйте драгоценный камень из него. Добавьте этот камень к вам MasterApp. Все модели будут доступны в пространстве имен EngineName.