Le bundle a actuellement rails verrouillé à 4.0.4
Dans Gemfile
j'ai apporté la modification suivante:
-bash> git diff Gemfile
...
-gem 'rails', '4.0.4'
+gem 'rails', '4.0.5'
J'ai ensuite couru bundle
et a obtenu un show-arrêt du message:
-bash> bundle
Fetching gem metadata from https://rubygems.org/........
Fetching additional metadata from https://rubygems.org/..
Resolving dependencies...
You have requested:
rails = 4.0.5
The bundle currently has rails locked at 4.0.4.
Try running `bundle update rails`
J'ai ensuite couru bundle update rails
, comme par le message ci-dessus, et le suivant (remarque que je suis en sautant des lignes sans changement).
-bash> bundle update rails
Fetching gem metadata from https://rubygems.org/........
Fetching additional metadata from https://rubygems.org/..
Resolving dependencies...
Installing rake 10.3.2 (was 10.3.0)
Installing multi_json 1.10.1 (was 1.9.2)
Installing activesupport 4.0.5 (was 4.0.4)
Installing actionpack 4.0.5 (was 4.0.4)
Installing actionmailer 4.0.5 (was 4.0.4)
Installing activemodel 4.0.5 (was 4.0.4)
Using activerecord-deprecated_finders 1.0.3
Installing activerecord 4.0.5 (was 4.0.4)
Installing railties 4.0.5 (was 4.0.4)
Installing rails 4.0.5 (was 4.0.4)
Your bundle is updated!
Question: Est-ce le comportement attendu? Selon un autre utilisateur, j'attend de voir la qu'est-ce que le verrouillage de la version.
Question: Pourquoi rails
verrouillé? Et est-il une meilleure façon de faire face à cette situation que ce que j'ai fait?
OriginalL'auteur user664833 | 2014-05-27
Vous devez vous connecter pour publier un commentaire.
Oui. Les gemmes ont des dépendances. Lorsque vous mettez à jour un bijou, il obtient une mise à jour de ses dépendances (dans le cas de rails, c'est son active* les pièces, par exemple).
C'est une sortie de succès
bundle update
, par la manière. Ce qui signifie qu'il n'y a pas de conflit dans la résolution des dépendances. Si il y avait un conflit, vous pouvez voir à la place. (quelque chose comme " Un bijou nécessite gem B v1.2.3, mais gem C utilise gem B v4.5.6').Parce Que Gemfile.verrouillage spécifié rails de la version 4.0.4. Et c'est cette version (à partir du fichier de verrouillage) qui sera utilisé par le système de regroupement, sur déploie, etc. Il suffit de changer de version dans un Gemfile ne sera pas affecter le gem version est chargé.
bundle install
/bundle update
est nécessaire.Mise à jour
Lien utile: http://viget.com/extend/bundler-best-practices
bundle update gem_name
- je viens de toujours exécuterbundle
(sans arguments) qui est équivalent àbundle install
(jusqu'à ce que bundlerv2
vient un jour). Seulement maintenant, j'étais sur une mise à jour série, et mis à jour sept autres pierres précieuses, un à la fois, et ont été en mesure de simplement mettre à jour la version enGemfile
et exécuterbundle
. Il s'avère que seulement maintenant, j'ai été obligé de courirbundle update jquery-rails
et j'ai réalisé que, en fait, je ne comprends toujours pas pourquoi.Les messages
You have requested: rails = 4.0.5
etThe bundle currently has rails locked at 4.0.4.
ne suggèrent pas de conflit. De même pourjquery-rails
- j'ai reçu des messages similaires:You have requested: jquery-rails ~> 3.1.0
etThe bundle currently has jquery-rails locked at 3.0.4.
-- Dans les deux cas, l'exécution debundle update gem_name
juste allé de l'avant et de mise à jour des pierres précieuses (apparemment pas différent que lorsque je mets à jour les pierres précieuses avecbundle
(akabundle install
)). J'aimerais savoir ce qui se passe vraiment. J'ai lu un tas de blogs et de réponses en ligne, et je n'ai pas encore trouvé une réponse satisfaisante.à ce stade, votre meilleure source est bundler code source, je pense. La seule réponse définitive est là 🙂
Ok, je vais le suivre. Je veux juste mentionner que je parle avec tout le respect dû, et j'ai sincèrement de la valeur de votre réponse et de vos commentaires. Votre réponse à la Pourquoi rails bloqué? Parce que
Gemfile.lock
spécifié rails version4.0.4
. Bien, chaque bijou est spécifié dansGemfile.lock
avec une version. Par exemple, je ne vois pas de différence entrerails
etpassenger
, encorerails
nécessitebundle update rails
obtenir les mises à jour etpassenger
est très bien avec justebundle install
. Remarque: j'utilise~>
pour chaque bijouGemfile
saufrails
. Mais encore une foisjquery-rails
a dit que c'était verrouillé. C'est tellement étrange.C'est ce qui s'est passé lorsque j'ai essayé d'exécuter
bundle install
après un changement de rails version: monosnap.com/image/ZZXsruvU5N7nazHbNYAvJ0V5w41wb8.png je ne peux pas reproduire ce "bijou est verrouillé" scénario, j'ai donc pris une supposition éclairée. Peut-être a quelque chose à voir avec le mode de déploiement (êtes-vous, par hasard, en essayant de mettre à jour les rails de version sur un déployés production, ou de quelque chose)?OriginalL'auteur Sergio Tulentsev