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.
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.
Utilisation bundle config github.https true
Tu peux faire:
gem 'jasmine', git: 'https://github.com/pivotal/jasmine-gem.git'
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.
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.
Vous devriez pouvoir mettre une URL Git complète dans votre Gemfile. Par exemple:
gem 'jasmine', :git => 'https://github.com/pivotal/jasmine-gem.git'
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.