Оба варианта сгенерируют двигатель . Разница в том --mountable
, что движок будет создан в изолированном пространстве имен, тогда как --full
будет создан движок, который разделяет пространство имен основного приложения.
Различия проявятся 3 способами:
1) Файл класса движка будет вызывать isolate_namespace
:
Библиотека / my_full_engine / engine.rb:
module MyFullEngine
class Engine < Rails::Engine
end
end
Библиотека / my_mountable_engine / engine.rb:
module MyMountableEngine
class Engine < Rails::Engine
isolate_namespace MyMountableEngine # --mountable option inserted this line
end
end
2) config/routes.rb
Файл движка будет иметь пространство имен:
Полный двигатель:
Rails.application.routes.draw do
end
Установленный двигатель:
MyMountableEngine::Engine.routes.draw do
end
3) Файловая структура для контроллеров, помощников, представлений и ресурсов будет иметь пространство имен:
create app / controllers / my_mountable_engine /application_controller.rb
create app / helpers / my_mountable_engine /application_helper.rb
create app / mailers create app / models
create app / views / layouts / my_mountable_engine /application.html.erb
create app / assets / images / my_mountable
создать app / assets / stylesheets / my_mountable_engine /application.css
создать приложение / assets / javascripts / my_mountable_engine /application.js
создать config / routes.rb создать lib / my_mountable_engine.rb
создать lib / tasks / my_mountable_engine.rake
создать lib / my_mountable_engine .rb
создать lib / my_mountable_engine / engine.rb
объяснение
Вариант использования этой --full
опции кажется очень ограниченным. Лично я не могу придумать какой-либо веской причины, по которой вы хотели бы разделить свой код в движок, не изолировав также пространство имен - по сути, это просто даст вам два тесно связанных приложения, совместно использующих идентичные файловые структуры, и все конфликты и утечку кода. что влечет за собой.
Каждая часть документации , которую я видел демонстрирует --mountable
вариант, и на самом деле текущий руководство края настоятельно рекомендует вам включить isolate namespace
- что то же самое , как говорят использование --mountable
более --full
.
Наконец, есть путаница в терминологии: К сожалению, rails plugin -h
показаны следующие описания:
[--full] # Сгенерировать движок rails с помощью связанного приложения Rails для тестирования
[--mountable] # Сгенерировать монтируемое изолированное приложение
Создается впечатление, что вы используете его --full
для создания «движка» и --mountable
чего-то еще, называемого «монтируемым приложением», хотя на самом деле они оба движка - один с пространством имен, а другой нет. Это обязательно приведет к путанице, поскольку пользователи, которые хотят создать движок, скорее всего, решат, что --full
это более подходящий вариант.
Вывод
rails plugin new something --full
= Двигатель в пространстве имен вашего приложения. (Почему ты?)
rails plugin new something --mountable
= Двигатель с собственным пространством имен. (Потрясающие)
Ссылки