Как я могу развернуть «приватные» гемы, к которым мои приложения могут получить доступ, но никто другой не может получить? - PullRequest
21 голосов
/ 22 ноября 2010

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

Какие есть варианты?

Ответы [ 5 ]

10 голосов
/ 17 мая 2012

GemFury это то, что вы ищете, я думаю.

10 голосов
/ 22 ноября 2010

Это кажется многообещающим:

https://github.com/cwninja/geminabox/

Хотя я сам этим не пользовался, поэтому не могу ручаться за это. Однако, это было рекомендовано в ветке, которую я недавно прочитал на официальном сайте Q & A Rubygems, где упоминалось, что встроенный хостинг rubygems не является рекомендуемым решением, и Geminabox был предложен в качестве хорошей альтернативы.

Обратите внимание, что он не имеет никакой аутентификации или безопасности (кроме, конечно, через скрытность), поэтому в зависимости от того, насколько чувствительны эти драгоценные камни, вы можете захотеть добавить что-то в себя (или даже просто сделать белый список по IP-адресу). *

8 голосов
/ 22 августа 2013

Способ сделать это - распаковать ваш драгоценный камень в каталог vendor / gems. Затем вы сообщаете Bundler, где его найти, используя ваш Gemfile, как обычно.

Сначала распакуйте драгоценный камень в продавца / драгоценные камни. Я предполагаю, что вы скачали драгоценный камень и сидели в открытом каталоге перед вами.

gem unpack your_gem.gem --target /path_to_rails_app/vendor/gems/.

Теперь обновите ваш Gemfile с помощью следующей строки:

gem 'your_gem', :path => "#{File.expand_path(__FILE__)}/../vendor/gems/your_gem"

Наконец, используйте Bundler, чтобы установить его и обновить Gemfile.lock

bundle install

Теперь у вас есть локальная копия гема, установленная в вашем приложении Rails.

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

5 голосов
/ 22 ноября 2010

Мое предложение для этого заключается в использовании bundler, частного git-репо и зависимости git + ssh. Единственная проблема заключается в том, что вам нужно будет найти способ управления ключами ssh, так как в настоящее время я не верю, что bundler поддерживает кэширование ключей ssh. Возможно, вы сможете использовать синтаксис стиля https://username:password@myrepo...., но я не пробовал его.

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

Надеюсь, это поможет!

1 голос
/ 22 ноября 2010

github также предлагает несколько частных репозиториев за небольшую плату.

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