Разница между плагинами и драгоценными камнями Ruby?

В чем разница между плагинами и гемами? Каковы разные варианты использования каждого из них? Где и почему вы бы использовали одно вместо другого?


person Mr. Black    schedule 02.04.2011    source источник


Ответы (2)


Самоцвет

  • Gem - это упакованное ruby-приложение, использующее систему упаковки, определенную RubyGems.
  • # P2 #
    # P3 #
  • Мы можем установить, обновить и запросить версию гема. Если использовать такой инструмент, как мой GemInstaller, можно легко автоматизировать установку и загрузку RubyGems с помощью одного простого файла конфигурации.

  • Gem, установленный для интерпретатора Ruby, может использоваться этим интерпретатором в рамках всей системы.
  • Gem может быть опубликован как плагин.
  • Также можно продавать в магазине / драгоценных камнях.

Плагин

  • Плагин является расширением Rails Framework.
  • Невозможно обновить с помощью команды. Для обновления необходимо удалить, а затем установить обновленную версию.
  • Должен быть прикреплен к рельсам. (должен быть init.rb)
  • Есть файл install.rb.
  • Плагин нельзя опубликовать как Gem.
  • Может использоваться только в приложении.

Плагин Goldspike устанавливается в каталоге vendor \ plugins \ rails-integration приложения как:
7,089 build.xml
1,141 LICENSE.txt
DIR plugins
6675 pom.xml
1447 README
DIR samples
каталог plugins / goldspike состоит из
24 init.rb
25 install.rb
DIR lib
549 Rakefile
536 README
DIR задач
DIR test
Каталог lib содержит весь исходный код плагина.

Gem против плагинов

  • У Rails был способ загрузки плагинов из каталога vendor / plugins /. Скорее всего, это будет устаревшим, поскольку Rails добавила поддержку объединения гемов с проектом в каталоге vendor / gems /. Гем-версии rspec предназначены для повседневного использования. Их следует использовать, если вы не поддерживаете приложение Rails в семействе 1.2.x или ранее.
  • Часто становится быстрее регистрироваться и выписываться из репозитория с помощью Gems, поскольку вы не включаете библиотеку в свое фактическое приложение. При использовании подключаемых модулей часто возникают меньшие проблемы, связанные с несовместимостью версий программного обеспечения в распределенной команде.
  • Общее практическое правило - сделать специфичную для Rails функциональность плагином, а более общие библиотеки Ruby превратить в драгоценные камни.
person Piyush Mattoo    schedule 02.04.2011
comment
спасибо @Piyush. Подскажите, пожалуйста, использование плагинов и драгоценных камней. И затем, почему / где мы используем плагины и драгоценные камни. Пожалуйста, объясните, используя концепцию реального времени. - person Mr. Black; 02.04.2011
comment
привет @ user409617, теперь все плагины, которые все используют. так что оба стали почти одинаковыми. но я лично предпочитаю плагины, так как могу просматривать код внутри плагина и точно знать, что происходит. (не то, чтобы драгоценные камни не могли, но это немного хлопотно): D - person sameera207; 02.04.2011
comment
@ sameera207 Я не согласен, я считаю, что сегодня подавляющее большинство приложений Rails используют драгоценные камни, а не плагины. Однако некоторые люди продают свои драгоценные камни или устанавливают их по пути относительно проекта через Bundler. - person Michelle Tilley; 02.04.2011
comment
@Brandon, извините, на самом деле я хотел сказать «драгоценные камни» вместо «плагинов». поэтому формулировку следует исправить как «теперь все драгоценности, которыми пользуются все» ... еще раз извините: D - person sameera207; 02.04.2011
comment
что это за числа 68 465 перед CHANGELOG - person hatenine; 02.03.2015

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

person serengeti12    schedule 06.10.2011
comment
Я не согласен, потому что мы не должны устанавливать gems в масштабе всей системы, потому что это может привести к загрязнению и сбою моего приложения. Вдобавок расскажу еще один сценарий. Что произойдет, если на одном VPS будет много приложений, и если драгоценные камни будут установлены как система, он выйдет из строя, поэтому для этого мы должны создать Gemset для каждого приложения. Используйте приложение Gemset for Rails. - person Gupta; 24.09.2016