У меня есть несколько приложений, которые я хочу поделиться с одним распространенным кодом. Я бы хотел сделать код и поделиться им по всем приложениям, хотя я не хочу публиковать его на общедоступном сервере gem.
Каковы некоторые параметры?
У меня есть несколько приложений, которые я хочу поделиться с одним распространенным кодом. Я бы хотел сделать код и поделиться им по всем приложениям, хотя я не хочу публиковать его на общедоступном сервере gem.
Каковы некоторые параметры?
Это кажется многообещающим:
https://github.com/cwninja/geminabox/
Хотя я не использовал его сам, поэтому я не могу ручаться за него. Тем не менее, это было рекомендовано в потоке, который я недавно прочитал на официальном сайте Rubygems Q & A, где было упомянуто, что встроенный хостинг rubygems не является рекомендуемым решением, а Geminabox был предложен в качестве хорошей альтернативы.
Обратите внимание, что он не имеет никакой аутентификации или безопасности (за исключением видимости), поэтому в зависимости от того, насколько чувствительны эти драгоценные камни, вы можете добавить что-то в себя (или даже просто "белый список по IP-адресу" ).
GemFury - это то, что вам нужно, я думаю.
Способ сделать это - распаковать драгоценный камень в каталог поставщика/драгоценных камней. Затем вы говорите Bundler, где его можно найти с помощью Gemfile, как обычно.
Сначала распакуйте драгоценный камень в вендор/драгоценные камни. Я предполагаю, что у вас есть gem, загруженный и сидящий в открытой директории перед вами.
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 или поддерево.
Мое предложение для этого - использовать bundler, частную репозицию git и зависимость git + ssh. Единственная проблема будет заключаться в том, что вам нужно будет найти способ управления ключами ssh, поскольку в настоящее время я не верю, что поставщик поддерживает кеширование ключей ssh. Возможно, вы сможете использовать синтаксис https://username:[email protected]...., но я его не пробовал.
Не забывайте, что у вас всегда есть возможность использовать bundle package
для упаковки ваших драгоценных камней для развертывания.
Надеюсь, это поможет!
github предлагает несколько частных репозиториев за небольшую плату.