Bundler и скрытые драгоценные камни - PullRequest
2 голосов
/ 15 марта 2012

У меня есть интересная ошибка при установке гемов непосредственно из github (:git => 'whatever').

Во-первых, когда я удаляю все гемы и запускаю команду bundle install , я получаю следующее:

Installing gem1
Installing gem2
Using gem3 (the one from github)

Затем, когда я хочу проверить, что у меня есть, я вижу следующее, используя список драгоценных камней :

gem1 (x.x.x)
gem2 (y.y.y)

Нет gem3 ... сейчасПрисмотревшись ближе к файловой системе, я вижу следующее:

ls -l ~/.rvm/gems/ruby-1.9.3-p125/gems
gem1
gem2

Так где же гем 3?Не там, где я ожидаю, что это будет:

ls -l ~/.rvm/gems/ruby-1.9.3-p125/bundler/gems
gem3-213213213

Так что он идет в комплекте / драгоценных камнях и не виден для списка драгоценных камней ... и развертыванием Capistrano, что дает мнеследующее:

git://github.com/author/gem3.git (at master) is not checked out. Please run `bundle install`

Меня больше беспокоит, что Capistrano не сможет развернуться ... У кого-нибудь есть какие-нибудь подсказки?

1 Ответ

1 голос
/ 15 марта 2012

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

При развертывании имеет более строгое / консервативное поведение.

С bundle help install, в разделе о Режим развертывания , который используется, когда указан флаг --deployment:

Gems устанавливаются в поставщика / комплектации, а не в системное местоположение по умолчанию

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

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

В результате, установка пакета --deployment устанавливает драгоценные камнив каталог поставщика / пакета в приложении.Это может быть изменено с помощью параметра --path.

...