Estoy investigando una aplicación de rieles: el servidor de prod tiene dos versiones de una gema específica instalada, ¿cómo puedo saber qué versión está usando la aplicación de prod?
ruby-on-rails
rubygems
Steve Brewer
fuente
fuente
Respuestas:
En Rails 3 y Rails 4, use
bundle show
En Rails 2,
rake gems
imprimirá qué gemas, dependencias y versiones están instaladas, congeladas, etc.fuente
bundle show | grep gem_name
, haga un ejemplo de brújula:bundle show | grep compass
Si usa bundler, puede obtener la versión de
fuente
bundle info [gemname]
lugar.Me tomó más de lo esperado encontrar y clasificar esta información, así que quería publicarla aquí en un lugar para que otros la vieran. También quería aclarar un poco esto para Rails 3:
script / about ha sido reemplazado por
rake about
Los detalles están aquí . Si está interesado, puede encontrar una lista de todos los cambios en la línea de comandos para Rails 3 aquí .rake gems
no funciona en Rails 3. En su lugar, debería utilizarbundle show
Como ejemplo, puede guardar todas las versiones de sus gemas en un archivo para verlas con:
gem list > all_gems.txt
y puede ver qué versiones usa su aplicación Rails con:
bundle show > project_gems.txt
Usando un editor como Vim, puede usar vimdiff fácilmente para ver los cambios
fuente
Probablemente haya una forma más directa de averiguarlo, pero si carga una consola y requiere una versión específica como esta:
Te dirá qué versión ya está activada:
fuente
En la terminal
o
Por ejemplo:
fuente
También hay una lista en
Gemfile.lock
, ubicada en el directorio raíz de su aplicación.Por eso dejo
Gemfile.lock
fuera de mi.gitignore
. Esto me ha salvado más de una vez cuando olvidé especificar la versión de la gemaGemFile
y una gema se actualizó con cambios importantes.fuente
Intente usar
script/about
. Tuconfig/environment.rb
también tiene información al respecto.En su
config/environment.rb
, puede especificar qué versión de unagem
aplicación en particular debe usar. Sin embargo, si tiene varias versiones de ungem
instalado en su máquina y no especifica la versión, la aplicación utilizará la última versión de esa gema.fuente
Mostrará todas las gemas coincidentes, por ejemplo, si alguien lo hace
Entonces la salida será la siguiente
fuente
script/about
le dirá qué versiones de las gemas principales de Rails y Rack está utilizando, pero nada más. Idealmente, si miras hacia adentroconfig/environment.rb
, debería haber una sección que se vea así:Con suerte, el autor de la aplicación habrá incluido allí todas las gemas y versiones necesarias. Sin embargo, las versiones son opcionales en este archivo y, en última instancia, nada impide que un desarrollador sin experiencia simplemente coloque un
require 'rubygems'; require 'some_random_thing'
en la parte superior de cualquier archivo.Si ve que se requiere una gema, pero no se especifica una versión, puede escribir
gem list
para ver todas las versiones de todas las gemas en el sistema. De forma predeterminada, utilizará el último disponible.fuente
Probablemente sea lo que puedas usar:
fuente
gem which gem_name
paquete show gemname Es decir, para diseñar tienes que escribir como
e imprimirá la versión actual de la gema.
fuente
prueba este para gema local:
Si usa paquete:
fuente
En la versión más reciente, usado
bundle show gem_name
fuente
Si usa bundler, puede obtener la versión usando:
fuente
En Gemfile, debería haber la respuesta:
fuente
Gemfile
no siempre declarará explícitamente un número de versión.