команда драгоценного камня. Что это значит - PullRequest
1 голос
/ 25 мая 2010

Иногда я видел следующий код.

gem 'factory_girl','= 1.2.3'
require 'factory_girl'

Я пытался взглянуть на gem doc , но не смог найти ответ на вопрос, что делает первая строка в приведенном выше коде?

Ответы [ 2 ]

4 голосов
/ 25 мая 2010

То, что вы ищете в документации по гемам, - это Кодирование с Rubygems .

Первая строка в основном гласит: «Эй, иди, возьми этот гем с этой версией» из каталога установки гемов и загрузи его в среду. Это в основном поможет вам добавить зависимости от версии к вашим require s вместо того, чтобы просто require 'factory_girl' делать самому.

Редактировать: Чтобы добавить к пункту Jörg ниже, я подумал, что у Райана Томайко была очень хорошая короткая и приятная статья о том, почему это "неправильно".

1 голос
/ 25 мая 2010

Как уже объяснил @theIV, активируется гем factory_girl, использующий точно (из-за знака =) версию 1.2.3.

Заметьте, однако, что это очень плохая практика и должно никогда быть выполнено. Если вы активируете гемы внутри своего кода, это означает, что люди, которые не используют RubyGems, больше не смогут использовать ваш код.

RubyGems - менеджер пакетов. Ваш код должен никогда не заботиться о том, какой менеджер пакетов использовался для его установки. Некоторые предпочитают RubyGems, некоторые dpkg / APT, некоторые RPM / YUM, некоторые RPM / APT, некоторые RPM / URPMI, некоторые RPM / YaST2, Portage, порты FreeBSD, pkgsrc, MacPorts, slashpackage, CoAPP, Conary, Slackware. Там их много. Некоторым нравится вообще не использовать менеджер пакетов . Или они используют RubyGems только для загрузки, но затем распаковывают гем в их каталог vendor.

Все это может не сработать, если в вашем коде используется метод gem.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...