Обидва варіанти генерують двигун . Різниця полягає в тому --mountable
, що створить двигун в ізольованому просторі імен, тоді як--full
створить двигун, який розділяє простір імен основного додатка.
Відмінності проявлятимуться трьома способами:
1) Файл класу двигунів викликає isolate_namespace
:
lib / my_full_engine / engine.rb:
module MyFullEngine
class Engine < Rails::Engine
end
end
lib / 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) Структура файлів для контролерів, помічників, представлень та ресурсів буде розділена на імена:
створити додаток / контролери / my_mountable_engine /application_controller.rb
створити додаток / помічники / my_mountable_engine /application_helper.rb
створити додаток / пошти створити додаток / моделі
створити додаток / види / макети / my_mountable_engine /application.html.erb
створити додаток / активи / образи / my_mountable_gine
створити додаток / активи / таблиці стилів / my_mountable_engine /application.css
створити додаток / активи / javascripts / my_mountable_engine /application.js
створити config / routes.rb створити lib / my_mountable_engine.rb
створити lib / task / my_mountable_engine.rake
створити lib / my_mountable .rb
створити lib / my_mountable_engine / engine.rb
Пояснення
Вигляд використання --full
опції, здається, дуже обмежений. Особисто я не можу придумати жодної вагомої причини, чому ви хочете відокремити свій код в двигуні, не виділяючи простору імен. Це, по суті, просто дасть вам два щільно поєднані програми, що обмінюються однаковими файловими структурами та всі конфлікти та витоки коду. що тягне за собою.
Кожна частина документації , яку я бачив демонструє --mountable
варіант, і на самому справі поточний керівництво краю настійно рекомендує вам включити isolate namespace
- що те ж саме , як кажуть використання --mountable
більш --full
.
Нарешті, є термінологічна плутанина: На жаль, rails plugin -h
показано такі описи:
[--фул] # Створіть рельсовий двигун із доданим пакетом Rails для тестування
[--mountable] # Створення ізольованого додатка, що монтується
Це створює враження, що ви використовуєте --full
для створення "двигуна" та --mountable
для створення ще чогось, що називається "монтується додаток", адже насправді вони обидва двигуна - один з просторами імен, а один - ні. Це неодмінно призведе до плутанини, оскільки користувачі, які прагнуть створити двигун, ймовірно, припускають, що --full
це більш релевантний варіант.
Висновок
rails plugin new something --full
= Двигун у просторі імен додатка. (Чому б ти?)
rails plugin new something --mountable
= Двигун із власним простором імен. (Awesome)
Список літератури