tutorial rails programas español ejemplos curso caracteristicas aprender ruby-on-rails rubygems

ruby on rails - programas - Cómo saber qué versión de una aplicación de gem a rails está usando



ruby on rails tutorial español pdf (12)

Estoy investigando una aplicación de rieles: el servidor de prod tiene instaladas dos versiones de una gema específica, ¿cómo puedo saber qué versión usa la aplicación prod?


En Gemfile, debería haber la respuesta:

gem ''rails'', ''4.0.0.rc1''


En la terminal

gem list | grep xxx

o

bundle show | grep xxx

xxx debe reemplazarse como el nombre de la gema que va a buscar


Intenta usar script/about . Su config/environment.rb también tiene información al respecto.

En su config/environment.rb puede especificar qué versión de una gem particular debe usar la aplicación. Sin embargo, si tiene múltiples versiones de una gem instaladas en su máquina y no especifica la versión, la aplicación utilizará la última versión de esa gema.


Me tomó más tiempo de lo esperado encontrar y ordenar esta información, así que quise publicarla aquí en un lugar para que otros puedan verla. También quería aclarar esto un poco para Rails 3:

  • script / about ha sido reemplazado con rake about Los detalles están here . Si le interesa una lista de todos los cambios de línea de comando para Rails 3, los puede encontrar here .

  • rake gems no funciona en Rails 3. En su lugar, debe usar bundle show

Como ejemplo, puede guardar todas las versiones de sus gemas en un archivo para ver con:

gem list > all_gems.txt

y puedes ver con qué versiones está usando tu aplicación Rails:

bundle show > project_gems.txt

Usando un editor como Vim puedes usar fácilmente vimdiff para ver los cambios


Probablemente haya una manera más directa de descubrir esto, pero si carga una consola y requiere una versión específica como esta:

gem ''RedCloth'', ''3.0.4''

Le dirá qué versión ya está activada:

=> Gem::LoadError: can''t activate RedCloth (= 3.0.4, runtime) for [], already activated RedCloth-4.2.2


Si usas bundler, entonces puedes obtener la versión de

bundle show [gemname]


También hay una lista en Gemfile.lock , que se encuentra en el directorio raíz de su aplicación.

Por este motivo, dejo mi .gitignore fuera de mi .gitignore . Esto me ha salvado más de una vez cuando olvidé especificar la versión de la gema en GemFile , y una gema se actualizó con los cambios de última hora.


prueba esta de gema local:

gem list gemname | grep -P ''(^|/s)/Kgemname(?=/s|$)''

Si usa paquete:

bundle exec gem list gemname | grep -P ''(^|/s)/Kgemname(?=/s|$)''


script/about le dirá qué versiones de las gemas principales de Rails y Rack está utilizando, pero nada más. Idealmente, si busca en config/environment.rb , debe haber una sección que se vea así:

# Specify gems that this application depends on and have them installed with rake gems:install # config.gem "bj" # config.gem "hpricot", :version => ''0.6'', :source => "http://code.whytheluckystiff.net" # config.gem "sqlite3-ruby", :lib => "sqlite3" # config.gem "aws-s3", :lib => "aws/s3"

Con un poco de suerte, el autor de la aplicación habrá incluido todas las gemas y versiones necesarias allí. Sin embargo, las versiones son opcionales en este archivo y, en última instancia, nada impide que un desarrollador inexperto simplemente require ''rubygems''; require ''some_random_thing'' un require ''rubygems''; require ''some_random_thing'' require ''rubygems''; require ''some_random_thing'' en la parte superior de cualquier archivo dado.

Si ves que se requiere una gema, pero no se especifica ninguna versión, puedes escribir la gem list para ver todas las versiones de todas las gemas en el sistema. Por defecto, usará el último disponible.


En Rails 3 y Rails 4, use el bundle show

En Rails 2, rake gems imprimirá qué gemas, dependencias y versiones están instaladas, congeladas, etc.


bundle exec gem which gem_name

Es probablemente lo que puedes usar:

$› bundle exec gem which rails /Users/xxxx/.rvm/gems/ruby-2.1.2@gemset/gems/railties-4.1.7/lib/rails.rb


gem list <gemname>

Mostrará todas las gemas coincidentes, por ejemplo, si alguien lo hace

gem list rack

Entonces la salida será la siguiente

*** LOCAL GEMS *** rack (1.6.4) rack-mount (0.6.14) rack-test (0.6.3, 0.6.2, 0.5.7)