59 votes

Signification du nouveau bloc "git_source(:github)" dans le fichier Gemfile

J'ai récemment créé une nouvelle application Rails 5, sans dépôt git. Le Gemfile généré automatiquement contient un nouveau bloc que je n'avais pas vu auparavant :

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

Qu'est-ce que ça veut dire ? Est-il obligatoire pour toute nouvelle application ?

60voto

papirtiger Points 1870

Il s'agit d'une solution de contournement d'un bogue dans Bundler qui peut entraîner le chargement des sources de github via HTTP et non HTTPS, ce qui le rend vulnérable aux attaques de type "man in the middle".

git_source ajoute une source que vous pouvez utiliser afin que la gemme soit téléchargée à partir d'un dépôt git au lieu d'un paquet provenant de rubygems.org .

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

Cela ferait en sorte que lorsque vous déclarez :

gem 'foo_bar', :github => 'foo/bar'

Bundler tenterait de télécharger la gemme à partir de https://github.com/foo/bar.git .

Depuis corriger cela serait un changement de rupture car cela invaliderait tout Gemfile existant. Le problème est corrigé dans Bundler 2.x. À ce stade, il devrait être possible de supprimer cette solution de contournement.

0 votes

Alors, est-ce une erreur provenant d'une gemme récemment mise à jour ? quelle gemme ?

1 votes

Une autre façon de contourner ce problème consiste à définir les paramètres suivants bundle config github.https true

1 votes

C'est vrai @Stefan. Mais toute équipe est aussi sûre que son membre le plus paresseux.

18voto

Paul J Points 396

La directive Bundler :github récupérera les données à partir de git://github.com/#{repo_name}.git ( source ), qui utilise le protocole non sécurisé http protocole.

Ce problème devrait être corrigé dans les futures versions de Bundler, mais cet extrait est ajouté en haut du Gemfile pour s'assurer que https est utilisé dans Bundler 1.

6voto

Obromios Points 53

Si vous ne voulez pas ajouter ce code à votre fichier gemfile mais que vous voulez quand même accéder de manière sécurisée à une gemme de github, vous pouvez utiliser la méthode suivante :

gem 'foo_bar', git: 'https://github.com/foo/bar.git

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