Как заморозить драгоценные камни в приложении на Ruby? - PullRequest
2 голосов
/ 03 августа 2010

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

Я знаю много способов сделать это в Rails, но как мне сделать это вручную в Ruby?

Я использую ювелир , основываясь на совете из моего предыдущего вопроса " Запуск проекта Ruby: github + build tool ".

Ответы [ 3 ]

2 голосов
/ 04 августа 2010

Вы можете использовать их независимо от инфраструктуры rubygems, сначала распаковав каждый драгоценный камень в поставщика / драгоценные камни (или любой другой путь в вашем проекте):

cd yourapp
mkdir -p vendor/gems
cd vendor/gems
gem unpack gem1
gem unpack gem2
[etc.]

... и затем добавление каталогов lib всех замороженных драгоценных камней в путь загрузки:

$:.unshift(*Dir[File.dirname(__FILE__) + "/vendor/gems/**/lib"])
0 голосов
/ 04 августа 2010

Моим первым предложением было бы также использовать Bundler и заблокировать ваш пакет. Вы можете даже поместить пакет в каталог своего приложения, если хотите распространять гемы с ним, хотя это может привести к проблемам, если гем содержит расширение с собственным кодом и вы распространяете его на другую платформу.

Кстати, Rails 3 использует Bundler исключительно для управления драгоценными камнями. В Rails 3 больше не будет rake rails:freeze:gems.

В качестве другого варианта, если вы по какой-то причине не хотите использовать Bundler, вы можете вручную поместить dir-каталог gem в некоторый подкаталог lib-dir в вашем приложении, добавить его в путь загрузки и потребовать его вручную. Если гем содержит чистый код Ruby без каких-либо расширений, это может сработать, но его будет сложно поддерживать, так как вам нужно будет делать обновления вручную.

0 голосов
/ 03 августа 2010

Как насчет использования Bundler ?С его помощью вы можете просто заблокировать жемчужины вашего приложения.

...