21 votes

Comment puis-je déployer des gemmes « privées » auxquelles mes applications peuvent accéder mais que personne d'autre ne peut obtenir ?

J'ai plusieurs applications pour lesquelles je veux partager un code commun. J'aimerais encapsuler le code dans une gem et le partager/versionner à travers les applications de cette manière, bien que je ne veuille pas le publier sur un serveur de gemmes public.

Quelles sont les options ?

10voto

Riley Dutton Points 2041

Cela semble prometteur:

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

Bien que je ne l'ai pas utilisé moi-même, je ne peux pas en garantir la qualité. Cependant, il a été recommandé dans une discussion que j'ai récemment lue sur le site officiel de questions-réponses Rubygems, où il a été mentionné que l'hébergement rubygems intégré n'est pas une solution recommandée, et Geminabox a été proposé comme une bonne alternative.

Il convient de noter qu'il ne propose aucune authentification ou sécurité (excepté par l'obscurité, évidemment), donc en fonction de la sensibilité des gemmes que vous utilisez, vous voudrez peut-être ajouter quelque chose vous-même (ou même simplement autoriser par adresse IP).

10voto

Keyvan Points 11

GemFury est ce que vous recherchez, je pense.

8voto

superluminary Points 5496

La manière de faire cela est en déballant votre gem dans le répertoire vendor/gems. Ensuite, vous indiquez à Bundler où la trouver en utilisant votre Gemfile comme d'habitude.

D'abord, déballez la gem dans vendor/gems. Je suppose que vous avez téléchargé la gem et qu'elle se trouve dans un répertoire ouvert devant vous.

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

Ensuite, mettez à jour votre Gemfile avec une ligne comme celle-ci :

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

Enfin, utilisez Bundler pour l'installer et mettre à jour votre Gemfile.lock

bundle install

Vous disposez maintenant d'une copie locale de la gem installée dans votre application Rails.

Vous pouvez maintenant partager la gem entre vos applications de la manière qui vous convient, en maintenant un lien symbolique, en tant que submodule Git, ou en tant qu'arborescence.

5voto

jonnii Points 17046

Ma suggestion pour cela est d'utiliser bundler, un dépôt git privé et une dépendance git+ssh. Le seul problème sera que vous devrez trouver un moyen de gérer les clés ssh car actuellement je ne pense pas que bundler supporte le cache des clés ssh. Vous pourriez peut-être utiliser la syntaxe de style https://username:password@myrepo, mais je ne l'ai pas essayée.

N'oubliez pas que vous avez toujours la possibilité d'utiliser bundle package pour emballer vos gemmes pour le déploiement.

J'espère que cela vous aidera!

1voto

Patrick Points 2265

Github propose également un certain nombre de dépôts privés moyennant des frais minimes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X