213 votes

Présentation du fichier Gemfile.lock

Après l'exécution de l' bundle install de commande, 'Gemfile.verrou"est créé dans le répertoire de travail. Ce qui ne les directives à l'intérieur de ce fichier signifie?

Par exemple, prenons le fichier suivant:

PATH
  remote: .
  specs:
    gem_one (0.0.1)

GEM
  remote: http://example.org/
  specs:
    gem_two (0.0.2)
    gem_three (0.0.3)
      gem_four (0.0.4)

PLATFORMS
  platform

DEPENDENCIES
  gem_two
  gem_one!

Ce n' 'CHEMIN', 'GEM', 'plates-formes"et"DÉPENDANCES"décrire? Sont-ils tous nécessaires?

Que doit contenir la 'distance' et 'spécifications' subdirectives?

Quel est le point d'exclamation après le gem nom dans les"avec des dépendances' la moyenne du groupe?

69voto

Miguel Fonseca Points 2947

Vous pouvez trouver plus à ce sujet dans le bundler site web (nous soulignons ci-dessous pour votre commodité):

Après le développement de votre application pendant un certain temps, vérifier dans l'application en collaboration avec le Gemfile et Gemfile.verrouillage instantané. Maintenant, votre dépôt a un enregistrement des versions exactes de toutes les gemmes que vous avez utilisé la dernière fois que vous savez à coup sûr que l'application fonctionne...

Ceci est important: le Gemfile.de verrouillage permet à votre application d'un package unique de votre propre code et le code tiers, il a couru la dernière fois que vous savez pour sûr que tout a fonctionné. La spécification exacte des versions de la troisième partie du code que vous dépendez dans votre Gemfile ne serait pas offrir la même garantie, car les gemmes généralement de déclarer toute une gamme de versions de leurs dépendances.

41voto

agenteo Points 161

en ce qui concerne le point d’exclamation je viens de découvrir c’est sur les pierres précieuses récupéré `` , par exemple

8voto

Isaac Betesh Points 741

Il me semble que CHEMIN d'accès les listes de la première génération des dépendances directement à partir de votre gemspec, alors que GEM listes de la deuxième génération des dépendances (c'est à dire que vos dépendances dépendent) et de ceux de votre Gemfile. CHEMIN d'accès: à distance:est - . parce qu'elle reposait sur un local gemspec dans le répertoire courant pour savoir ce qui appartient en CHEMIN::spec, alors que la GEMME: distance:est - rubygems.org, puisque c'est là où il devait aller pour savoir ce qui appartient à GEM::spec.

Dans un Rails de plugin, vous verrez une section de TRAJECTOIRE, mais pas dans une application Rails. Depuis l'application ne dispose pas d'un fichier gemspec, il n'y aurait rien à se mettre dans le CHEMIN d'accès.

Comme pour les DÉPENDANCES, gembundler.com membres:

Runtime dependencies in your gemspec are treated like base dependencies, 
and development dependencies are added by default to the group, :development

Le Gemfile généré par rails plugin new my_plugin dit quelque chose de semblable:

# Bundler will treat runtime dependencies like base dependencies, and
# development dependencies will be added by default to the :development group.

Ce que cela signifie, c'est que la différence entre

s.add_development_dependency "july" # (1)

et

s.add_dependency "july" # (2)

est que (1) comprend uniquement des "juillet" dans le Gemfile.verrouiller (et donc dans l'application) dans un environnement de développement. Ainsi, lorsque vous exécutez bundle install, vous allez voir "juillet" non seulement en vertu de CHEMIN d'accès, mais aussi en vertu de DÉPENDANCES, mais seulement dans le développement. En production, il ne sera pas là du tout. Toutefois, lorsque vous utilisez (2), vous allez voir "juillet" c'est la seule VOIE, et non dans les DÉPENDANCES, mais il s'affiche lorsque vous bundle install d'un environnement de production (c'est à dire dans quelques autres gemme qui comprend la vôtre en tant que dépendance), non seulement le développement.

Ce ne sont que mes observations et je ne peux pas expliquer complètement pourquoi de tout cela est la façon dont il est, mais je souhaite la bienvenue à plus de commentaires.

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