Gem Vs Plugin Vs Engine в Ruby on Rails
В чем разница между Gem-пакетом, плагином и движком в Ruby on Rails?
Я думаю, что мы используем плагин перед Rails3.2, и после того, как rails3.2 является выпуском, мы используем gem-пакет в качестве плагина, но как мы можем использовать движок в ROR?
Ответы
Ответ 1
Плагины, которые вы знали из Rails 2 (т.е. плагины в папке vendor/plugins
), были устаревшими для Rails 3.2; поддержка была полностью удалена в Rails 4. Теперь существует концепция "gemified plugin" , где плагины по существу построены как драгоценные камни, и могут использоваться для разных приложений Rails.
Но чтобы ответить на ваш вопрос о gems vs plugins, ознакомьтесь с этим fooobar.com/questions/158725/.... Короче говоря, plugins
из юниверса Rails 2 является расширением приложения rails, тогда как драгоценный камень - это упакованное рубиновое приложение.
Что касается движков Rails, я нашел, что это довольно простое и интуитивно понятное определение для механизма Rails:
Rails Engines - это в основном целое приложение Rails, которое живет в контейнере другого. Иными словами, как отмечают документы: само приложение - это просто движок на корневом уровне. На протяжении многих лет мы видели двигатели сена как части драгоценных камней, такие как devise или rails_admin. В этом примере показана мощность движков, предоставляя большой набор относительно автономных функций, "смонтированных" в приложении.
И поскольку оба рельсовых движка и плагины являются типами рубиновых приложений, все они могут быть упакованы и использованы как драгоценный камень (обычно).
Ответ 2
Ответ цитируется Разница между плагинами и драгоценными камнями Ruby?
Gem
- Gem - это упакованное рубиновое приложение, использующее систему упаковки, определенную RubyGems.
-
Рельсы сами по себе являются драгоценными камнями.
Rails gem установлен в jruby-1.0\lib\ruby \ gems\1.8\gems\rails-1.2.3 as:
DIR bin
DIR встроенный
68 465 CHANGELOG
DIR configs
DIR рассылки
DIR doc
DIR среды
307 fresh_rakefile
DIR помощники
DIR html
DIR lib
1,072 MIT-LICENSE
11,969 Rakefile
8,001 README
Каталог lib содержит весь исходный код gem.
-
Мы можем установить, обновить и запросить версию gem. Если вы используете такой инструмент, как GemInstaller, можно легко автоматизировать установку и загрузку RubyGems с помощью простого простого файла конфигурации.
- Gem, установленный для интерпретатора Ruby, может использоваться общесистемным для этого интерпретатора.
- Gem может быть опубликован как плагин.
- Можно также продавать в вендоров/драгоценных камнях.
Plugin
- Плагин - это расширение Rails Framework.
- Невозможно обновить с помощью команды. Для обновления нужно удалить и установить обновленную версию.
- Должен быть подключен к рельсам. (должен иметь init.rb)
- Имейте файл install.rb.
- Плагин не может быть опубликован как Gem.
- Может использоваться только для широкого использования.
Плагин Goldspike устанавливается в каталоге vendor\plugins\rails-integration приложения как:
7,089 build.xml
1,141 LICENSE.txt
DIR плагины
6,675 pom.xml
1,447 README
DIR образцы
Каталог плагинов /goldspike состоит из
24 init.rb
25 install.rb
DIR lib
549 Rakefile
536 README
DIR
DIR test
Каталог lib содержит весь исходный код плагина.
Gem vs Plugins
- У Rails был способ загрузки плагинов из каталога vendor/plugins/. Это, скорее всего, будет отрицательным, поскольку Rails добавила поддержку для объединения драгоценных камней в проект
в каталоге vendor/gems/.
Драгоценные версии rspec - это те, которые предназначены для повседневного использования. Нужно идти с ними, если вы не поддерживаете приложение Rails в семействе 1.2.x или ранее.
- Чаще всего становится быстрее регистрировать и выгружать репозиторий с помощью Gems, поскольку вы не включаете библиотеку в свое фактическое приложение.
Часто возникают проблемы с использованием плагинов, связанных с несовместимостью, возникающими в отношении версий программного обеспечения среди распределенной команды.
- Общее правило - сделать Rails-специфическую функциональность плагином при создании более общих библиотек Ruby в драгоценных камнях.
Двигатель
An Engine
в терминологии rails на самом деле является субапикацией веб-приложения. Например, что-то вроде блога, форума или простой проверки подлинности: это не полномасштабные приложения, а страницы/представления/контроллеры/модели, которые можно добавить в любое приложение rails.
В rails2 это будет сделано с помощью plugin
. Теперь, поскольку rails3 двигатель может быть упакован в gem
.
- Gem: это общая библиотека, которую можно легко установить, с управлением версиями, иметь зависимости и т.д.
- Механизм: это под-приложение приложения Rails, а поскольку Rails 3 распределены как драгоценный камень (что является удивительным!).
Итак, когда вы будете использовать один или другой:
- создать драгоценный камень, если вы хотите разделить функциональность ruby
- создайте движок (и упакуйте его в драгоценный камень), если у вас есть части вашего приложения rails, которые можно использовать в более общем плане.
Вот заархивированный учебник по созданию движка..
Ответ 3
Нет более плагинов, поскольку Rails 4. Заметки о выпуске Rails 4.0:
Rails:: Плагин ушел. Вместо добавления плагинов к поставщикам/плагинам использовать драгоценные камни или связки с помощью путей или зависимостей git.
Любой двигатель может содержаться в драгоценном камне. Gem - это просто псевдоним для "библиотеки".
Лучший способ узнать, какова их разница, генерирует три из них и просматривает их структуру каталогов:
bundle gem a_gem
, используйте для функций, не относящихся к рельсам.
rails plugin new b_railtie
, используйте для расширений rails, которые не требуют полной настройки приложения. но, поскольку он все еще настроен на рельсы (вы получаете свое фиктивное приложение Rails в /test
, например), вы, вероятно, собираетесь использовать railtie. railtie - это класс, который наследует от Rails::Railtie
, и дает вам удобную DSL для подключения вашего кода в Rails. например, если вы хотите выполнить какое-либо действие :before
некоторого шага инициализации приложения Rails, вы можете использовать initializer
Railtie class_method. Paperclip
rails plugin new c_engine --full
, используйте для расширений rails, которые сами будут полноценными приложениями, смонтированными в вашем приложении. даст вам /app
dir и Engine
подклассу, кроме базовой установки <<29 > .
rails plugin new c_engine --mountable
, то же, что и --full
, но создаст пространства имен, готовые к установке в ваш движок приложения. Spree
И вот довольно хорошая ссылка: http://hawkins.io/2012/03/defining_plugins_gems_railties_and_engines.
Ответ 4
Двигатели очень связаны с плагинами. Двигатели могут быть плагинами, а плагины могут быть двигателями. Все они могут быть созданы с помощью генератора rails plugin
с двумя различными опциями --full
или --mountable
.
Я думаю, что здесь главное отличие между двигателями и драгоценными камнями.
Драгоценные камни - это всего лишь код, предоставляющий набор функциональных возможностей всем, кто интегрирует его в свой код.
Он содержит:
Может быть упакован и перенесен на сервер RubyGems
Двигатели - настоящие драгоценные камни. Все двигатели могут быть драгоценными камнями (если они упакованы), но не все драгоценные камни являются двигателями.
Мы можем сказать это другим словом. Двигатели - это функция Ruby on Rails, которая может содержать объекты, специфичные для Rails: модели, контроллеры, представления, миграции.
Он должен быть встроен в приложение Rails и не может работать сам по себе.
Очень хорошее и быстрое чтение Artricle