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

Как преобразовать существующее приложение Rails 3 в движок?

Как я могу конвертировать приложение форума Я развивался в Rails Engine, чтобы он мог быть встроен в другие приложения?

Что нужно добавить, сохранить или удалить? Должен ли я предлагать способ интеграции моделей? Как настроить маршруты и пользовательскую настройку? Как упаковать его в Gem? О чем я должен следить?


После прочтения статей и документации мне удалось сузить мои вопросы:

  • Должен ли я использовать пробелы в моделях? То есть, должен ли я хранить их в модуле Engine и в папке app/models/engine?
  • Какие файлы конфигурации в config мне следует хранить?
  • Как насчет папки public? В Rails 3.1 таблицы стилей и javascripts были перемещены в папку app/assets, которая решила эту проблему, но как мне добиться такого же эффекта в Rails 3.0?
4b9b3361

Ответ 1

Слишком много вопросов здесь, чтобы правильно ответить на них. Это одна из тех вещей, которые будут окупаться для вас, просто копаясь и пробовав ее. По мере того как вы углубляетесь в нее, возвращайтесь и задавайте новые конкретные вопросы.

Вот некоторые из ресурсов, которые я использовал, когда я недавно это сделал.

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

Вероятно, вы захотите создать generator, чтобы создать миграцию, в которой есть все таблицы, которые требуется вашему движку. Другие генераторы могут быть созданы для переопределения представлений по умолчанию и тому подобного.

Создайте тестовое приложение, которое использует ваш драгоценный камень. Многие проблемы, с которыми вы столкнетесь, - это убедиться, что вы правильно загружаете свои зависимости от двигателя. Пока вы находитесь в разработке, отредактируйте Gemfile вашего тестового приложения, чтобы указать прямо на источник вашего драгоценного камня... что-то вроде этого:

gem 'my-forum', :path => '~/work/my-forum'

Пространства имен

Вы должны хотя бы назвать свои таблицы/модели, чтобы вы не столкнулись с именованием коллизий. Глядя на ваше текущее приложение для форума, я бы, по крайней мере, префикс всех ваших таблиц с помощью "forum_". Весьма вероятно, что кто-то, использующий ваш движок, будет иметь другую модель с именем Category, например... так что ForumCategory будет лучшим выбором.

Определенно пространство имен любых классов, которые вы создаете в каталоге lib.

Файлы конфигурации

Вы хотите сохранить свой routes.rb в каталоге конфигурации. Вам также может потребоваться сохранить инициализаторы. Любые конкретные приложения, скорее всего, придется переместить в другое место.

Публичные файлы

С Rails 3.0.x вы можете сохранить таблицы стилей и javascripts в общедоступном каталоге. Я думаю, что есть немного кода, который нужно добавить к вашему классу Engine, хотя...

initializer "static assets" do |app|
  app.middleware.use ::ActionDispatch::Static, "#{root}/public"
end