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

Gem Vs Plugin Vs Engine в Ruby on Rails

В чем разница между Gem-пакетом, плагином и движком в Ruby on Rails?

Я думаю, что мы используем плагин перед Rails3.2, и после того, как rails3.2 является выпуском, мы используем gem-пакет в качестве плагина, но как мы можем использовать движок в ROR?

4b9b3361

Ответ 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.

Я думаю, что здесь главное отличие между двигателями и драгоценными камнями.

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

Он содержит:

  • Gemspec
  • папка Lib

Может быть упакован и перенесен на сервер RubyGems

Двигатели - настоящие драгоценные камни. Все двигатели могут быть драгоценными камнями (если они упакованы), но не все драгоценные камни являются двигателями.

Мы можем сказать это другим словом. Двигатели - это функция Ruby on Rails, которая может содержать объекты, специфичные для Rails: модели, контроллеры, представления, миграции.

Он должен быть встроен в приложение Rails и не может работать сам по себе.

Очень хорошее и быстрое чтение Artricle