Ответ 1
An engine (очень хорошее руководство) - это в основном небольшое приложение Rails: имеет контроллеры, может вводить в ваш код рельсов различными способами (совместное использование классов/контроллеров и т.д.) и, самое главное, может использовать ваш основной код приложения Rails прозрачно.
Подумав немного об этом, я считаю, что вам нужен двигатель, причина в том, что простая модель все еще требует миграции. Обратите внимание, что двигатель в основном представляет собой драгоценный камень, а также несколько дополнений, предоставляемых рельсами.
Хотя miguiding (плагины в рельсах больше не используются), команда rails plugin new blorgh --mountable
создает gem, который является движком рельсов.
Как вы понимаете, является ли драгоценный камень рельсовым двигателем? По файлу engine.rb
(можно назвать иначе, содержимое - важный материал).
module Blorgh
class Engine < ::Rails::Engine
isolate_namespace Blorgh
end
end
Еще одна важная вещь, о которой вам следует знать, - это то, что для вашего gemfile добавлен ваш собственный камень в качестве рельсов (фактически Bundler.require
) auto require
один файл: файл с именем lib/yourgemname.rb
, в этом случае lib/blorgh.rb
. Это ваша точка входа.
Помимо этого, все другие вещи (gemspec и все другие файлы) - это вещи, созданные для рубигемов. Важная часть состоит в том, что вы используете файл .gemspec
в качестве своего gemfile, просто добавьте драгоценные камни, используя add_dependency
вместо стандартного синтаксиса Gemfile. Если вы хотите (и вы должны) узнать больше о драгоценных камнях ruby, эта статья действительно хороша
Каталог app
автоматически загружается как рельсы, поэтому добавление app/models/yourmodel.rb
- это хороший способ, чтобы ваша модель автоматически загружалась и делилась со всеми вашими приложениями.
Последнее важное, это миграции. Вы должны не забудьте запустить your_engine_name:install:migrations
в своем приложении Rails, чтобы скопировать ваши миграции с вашего движка в ваше приложение rails и запустить их (в противном случае вы можете увидеть предложения эта статья)
И вы готовы. Одна запись! Для установки вашего драгоценного камня у вас есть два варианта: используйте удаленный репозиторий git (лучший вариант) или для локальной разработки вы можете использовать :path
, здесь два примера, которые можно добавить в ваши GEM файлы Rails:
# Use this only for development purposes
gem 'yourgem', '1.0.0', path: 'your/local/path/to/gem'
# Use this for deploy and such, you'll need access to that repository
gem 'yourgem', '1.0.0', git: 'yourgiturl'
Этого должно быть достаточно