J'étudie une application rails - le serveur prod a deux versions d'un gem spécifique installé, comment puis-je savoir quelle version l'application prod utilise?
ruby-on-rails
rubygems
Steve Brewer
la source
la source
Réponses:
Dans Rails 3 et Rails 4, utilisez
bundle show
Dans Rails 2,
rake gems
affichera les gemmes, dépendances et versions installées, gelées, etc.la source
bundle show | grep gem_name
exemple pour la boussole:bundle show | grep compass
Si vous utilisez bundler, vous pouvez obtenir la version à partir de
la source
bundle info [gemname]
plutôt.Il m'a fallu plus de temps que prévu pour trouver et trier ces informations, je voulais donc les publier ici à un endroit pour que d'autres puissent les voir. Je voulais également clarifier un peu cela pour Rails 3:
script / about a été remplacé par
rake about
Les détails sont ici . Si vous êtes intéressé, une liste de tous les changements de ligne de commande pour Rails 3 peut être trouvée ici .rake gems
ne fonctionne pas dans Rails 3. À la place, vous devez utiliserbundle show
À titre d'exemple, vous pouvez enregistrer toutes les versions de vos gemmes dans un fichier pour les visualiser avec:
gem list > all_gems.txt
et vous pouvez voir quelles versions votre application Rails utilise avec:
bundle show > project_gems.txt
En utilisant un éditeur comme Vim, vous pouvez facilement utiliser vimdiff pour voir les changements
la source
Il existe probablement un moyen plus direct de le savoir, mais si vous chargez une console et avez besoin d'une version spécifique comme celle-ci:
Il vous dira quelle version est déjà activée:
la source
Dans le terminal
ou
Par exemple:
la source
Il existe également une liste dans
Gemfile.lock
, située dans le répertoire racine de votre application.Pour cette raison, je laisse de
Gemfile.lock
côté mon.gitignore
. Cela m'a sauvé plus d'une fois lorsque j'ai oublié de spécifier la version de la gemme dansGemFile
, et une gemme a été mise à jour avec des changements de rupture.la source
Essayez d'utiliser
script/about
. Votre aconfig/environment.rb
également des informations à ce sujet.Dans votre,
config/environment.rb
vous pouvez spécifier quelle version d'unegem
application particulière doit utiliser. Cependant, si vous avez plusieurs versions d'ungem
installé sur votre machine et que vous ne spécifiez pas la version, la dernière version de ce joyau sera utilisée par l'application.la source
Il montrera toutes les gemmes correspondantes, par exemple si quelqu'un le fait
Ensuite, la sortie sera comme suit
la source
script/about
vous dira quelles versions des gemmes de base Rails et Rack vous utilisez, mais rien d'autre. Idéalement, si vous regardezconfig/environment.rb
dedans, il devrait y avoir une section qui ressemble à ceci:Avec un peu de chance, l'auteur de l'application y aura inclus toutes les gemmes et versions requises. Cependant, les versions sont facultatives dans ce fichier et, en fin de compte, rien n'empêche un développeur inexpérimenté de simplement frapper un
require 'rubygems'; require 'some_random_thing'
en haut d'un fichier donné.Si vous voyez qu'une gemme est requise, mais qu'aucune version n'est spécifiée, vous pouvez taper
gem list
pour voir toutes les versions de toutes les gemmes sur le système. Par défaut, il utilisera le dernier disponible.la source
Est probablement ce que vous pouvez utiliser:
la source
gem which gem_name
bundle show gemname Ie pour la conception, vous devez écrire comme
et il imprimera la version actuelle du gem.
la source
essayez celui-ci pour un joyau local:
Si vous utilisez un bundle:
la source
Dans la version plus récente, utilisé
bundle show gem_name
la source
Si vous utilisez bundler, vous pouvez obtenir la version en utilisant:
la source
Dans Gemfile, il devrait y avoir la réponse:
la source
Gemfile
ne déclarera pas toujours explicitement un numéro de version.