web-dev-qa-db-fra.com

Forcer l'installation du bundle à utiliser https: // au lieu de git: // pour les gemmes basées sur GitHub

J'essaie de construire un projet Rails et parce que l'hôte sur lequel je travaille n'a pas accès à Internet pour le protocole git: // (port 9418), j'obtiens des erreurs comme

Fetching git://github.com/pivotal/jasmine.git
fatal: unable to connect to github.com:
github.com[0: 192.30.252.130]: errno=Connection refused

lors de l'exécution bundle install.

La ligne pertinente dans GemFile ne spécifie pas git: // comme protocole, elle pointe simplement vers GitHub comme source pour la gemme

gem 'jasmine', :github => 'pivotal/jasmine-gem'

Que dois-je faire pour que bundler utilise https: // plutôt que git: // pour extraire des gemmes de GitHub?

Éditer:

Existe-t-il un moyen autre que la modification de chaque ligne affectée dans le GemFile? Je préfère éviter tout problème de fusion sur toute la ligne si le GemFile du projet est mis à jour.

49
Bell

Git fournit une fonctionnalité de réécriture d'URL à l'aide de l'option de configuration url..insteadOf.

Donc, pour établir toutes les connexions avec github.com, utilisez https: // plutôt que git: //

git config --global url."https://github.com".insteadOf git://github.com

Le --global switch définit l'option de configuration pour toutes les opérations git par l'utilisateur actuel, donc il peut y avoir des moments où il peut être trop intrusif. Mais cela évite de changer la configuration git dans le projet en cours.

54
Bell

Utilisation bundle config github.https true

60
Sam Kah Chiin

Tu peux faire:

gem 'jasmine', git: 'https://github.com/pivotal/jasmine-gem.git'
37
Agis

Si vous voulez cela juste pour toutes les gemmes dans un Gemfile, vous pouvez ajouter ces lignes en haut du fichier:

git_source(:github) do |repo_name|
  repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
  "https://github.com/#{repo_name}.git"
end

Vous pouvez également utiliser bundle config github.https true. Mais cela n'affecte que votre environnement actuel.

Cela ne sera plus nécessaire avec Bundler 2.0.

14
matthias

si vous déployez sur heroku, vous pouvez simplement ajouter BUNDLE_GITHUB__HTTPS (notez le double trait de soulignement) en tant que variable d'environnement et définissez-le sur true (dans le tableau de bord de votre application heroku sous l'onglet Settings dans le Config Vars section). cela fera basculer le protocole de git:// à https:// pour toutes ces demandes.

9
clairity

Vous devriez pouvoir mettre une URL Git complète dans votre Gemfile. Par exemple:

gem 'jasmine', :git => 'https://github.com/pivotal/jasmine-gem.git' 
3
James Frost

Si une solution qui nécessite un paramètre obscur spécial à effectuer sur chaque installation que vous faites pour un tout petit peu de sucre syntaxique n'est pas une solution.

C'est pourquoi je propose ceci comme réponse:

utilisez simplement :https & signaler un bug de sécurité avec bundler que le protocole non chiffré est par défaut.

0
bbozo