Обидва варіанти генерують двигун . Різниця полягає в тому --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)
Список літератури