Bundler: Está tratando de instalar en modo de implementación después de cambiar su Gemfile


Soy bastante nuevo en bundler y capistrano, y estoy tratando de usarlos juntos. Cuando intento implementar, recibo el mensaje:

Está intentando instalar en modo de implementación después de cambiar su Gemfile. Ejecute 'bundle install' en otro lugar y agregue el Gemfile actualizado.bloqueo al control de versiones.

No se cómo satisfacer al sistema que se queja, y no entiendo por qué se presenta la queja porque leí en el doc:

Si a Gemfile.el bloqueo existe, y ha actualizado su Gemfile (5), bundler usará las dependencias en el Gemfile.bloqueo para todas las gemas que no actualizó, pero volverá a resolver las dependencias de gemas que sí actualizaste. Puede encontrar más información sobre esta actualización proceso a continuación bajo ACTUALIZACIÓN CONSERVADORA.

Interpreto que eso significa que el Bundler puede manejar el hecho de que mi Gemfile no es lo que esperaba. Alguna ayuda?

Especificaciones: Ruby 1.9.3, Rails 3.2.3, Capistrano 2.12.0, Bundler 1.1.4, Windows 7, implementación en una máquina Posix.

Edit: Mi Gemfile incluye bloques lógicos como los siguientes:

unless RbConfig::CONFIG['host_os'] === 'mingw32'
  # gem 'a' ...
end
Author: JellicleCat, 2012-07-17

16 answers

El mensaje de error que está recibiendo con respecto a Gemfile.lock puede ser porque su Gemfile y Gemfile.lock no están de acuerdo entre sí. Parece que has cambiado algo en tu Gemfile desde la última vez que ejecutaste bundle install (o update). Cuando bundle install, actualiza su Gemfile.bloquee con cualquier cambio que haya realizado en Gemfile.

Asegúrese de ejecutar bundle install localmente, y haga check-in para controlar el código fuente de su Gemfile.lock recién actualizado después de eso. Entonces intente desplegarse.

Editar: Como se reconoce en los comentarios, un condicional en el Gemfile, resultó en un válido Ejemplo.bloqueo en una plataforma, inválido en otra. Proporcionar un indicador :platform para estas gemas dependientes de la plataforma en el Gemfile debería resolver la asimetría.

 68
Author: Edd Morgan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-13 22:31:48

Vi .bundle / config

Cambie la opción BUNDLE_FROZEN de ' 1 'a'0'

Hacer "bundle install"


O

Ejecute "bundle config"

Ver si el valor" frozen " es true establézcalo en false

Bundle config frozen false

 22
Author: Gaurav24,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-23 12:08:11

Tenga cuidado con la configuración global de Bundler.

Tenía una configuración global en mi entorno de desarrollo en ~/.bundle/config que no tenía en mi entorno de CI / Producción que causaba que el Gemfile.lock que se generaba en mi entorno de desarrollo fuera diferente al de mi entorno de CI / Producción.

En mi caso estaba configurando github.https a true en mi entorno de desarrollo, pero no tenía dicha configuración en mi entorno CI / Producción. Esto causó que los dos archivos Gemfile.lock fueran diferentes.

 16
Author: Joshua Pinter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-16 23:35:46

Cuando vea lo siguiente...

$ bundle install
You are trying to install in deployment mode after changing
your Gemfile. Run `bundle install` elsewhere and add the
updated Gemfile.lock to version control.

If this is a development machine, remove the Gemfile freeze
by running `bundle install --no-deployment`.

You have added to the Gemfile:
* source: rubygems repository https://rubygems.org/
* rails (~> 3.2)
. . .

... Entonces, el problema es más probable que haya desactualizado .archivos gem en el directorio vendor / cache.

Tal vez, anteriormente ejecutó $bundle install --deployment que puso algunos "obsoletos" .¿archivos de gemas en la caché?

En cualquier caso, puede superar este error ejecutando: bundle install --no-deployment

Esa es una de las muchas cosas buenas de Rails... los mensajes de error a menudo le dicen exactamente qué hacer para solucionar el problema.

 10
Author: l3x,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-24 22:26:43

La solución para mí era ligeramente diferente a las otras enumeradas aquí. Estaba tratando de actualizar de sidekiq a sidekiq-pro (que requiere bundler 1.7.12+), pero seguí recibiendo el mensaje" Está tratando de instalar en modo de implementación después de cambiar su Gemfile " de travis-ci

La inspección de la salida de la consola de travis-ci reveló que se estaba utilizando una versión anterior de bundler.

En mi caso, tuve que editar el travis.archivo yml a añadir:

before_install: - gem update bundler

Esto forzó a travis-ci a usar la última versión de bundler e hizo desaparecer el mensaje de error.

 4
Author: dacoinminster,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-25 19:02:42

Mi problema específico estaba relacionado con lo reportado por @JoshPinter, es decir, discrepancias de dev-vs-deploy host en el protocolo utilizado por bundler para recuperar gemas de github.

Para hacer una larga historia corta, todo lo que tenía que era modificar la siguiente entrada Gemfile...

gem 'activeadmin', github: 'activeadmin'

To a esta sintaxis segura (ver referencia):

gem 'activeadmin', git: 'https://github.com/activeadmin/activeadmin.git'

Y mis despliegues han vuelto a la normalidad.

 4
Author: Giuseppe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-22 08:39:22
rm -fr .bundle

Solucionado el problema para mí.

 3
Author: Aneil Mallavarapu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-25 21:33:33

Me encontré con algo similar antes. Una forma de arreglarlo, creo, pero puede tomar más espacio en su servidor del que desea, es ejecutar

bundle install --deployment 

Y luego tratar de desplegar. Esto hace algo como instalar todas sus gemas en la carpeta del proveedor, que creo que generalmente es bueno evitar... pero probablemente funcionará. Mi aplicación solía comportarse así, mi solución era eliminar versiones exactas para descargar en mi Gemfile, y luego volver a agrupar e implementar.

gem 'rails_admin', :git => 'git://github.com/sferik/rails_admin.git', :branch => 'master'

A

gem 'rails_admin'

O puede hacer lo que sugiere, y enviar su proyecto fuera del servidor de producción a una máquina local, agruparlo y luego repush en su servidor. Esta solución podría no ser 100% correcta, pero parte de ella funcionó para mí... pensé en compartirlo. Goodluck

 1
Author: MoB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-16 22:52:36

Otra causa del error:

Esto es un poco tonto, pero estoy seguro de que alguien más cometerá el mismo error.

Para Rails 4 Heroku agregó la gema rails_12factor. Si lo estabas usando antes de que lo agregaran, entonces tendrás estas dos gemas:

gem 'rails_log_stdout',  github: 'heroku/rails_log_stdout'
gem 'rails3_serve_static_assets', github: 'heroku/rails3_serve_static_assets'

Tienes que eliminarlos cuando añadas el nuevo. (están incluidos). Creo que puede salirse con la suya hasta que toque las líneas en su archivo de gemas, entonces Heroku nota la duplicación y grita con lo anterior error.

Buena suerte con Rails 4.

 1
Author: bobbdelsol,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-02 08:29:05

En nuestro caso, estábamos usando una característica que no estaba disponible en una versión antigua de bundler que se ejecutaba en nuestra máquina de producción. Por lo tanto, fue suficiente actualizar bundler, es decir, hacer un gem update bundler.

 1
Author: nerdinand,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-26 08:41:46

Esto podría ser una idea peligrosa, pero si absolutamente debe probar algo en un entorno de despliegue de producción, puede editar el .paquete / archivo de configuración

# This value is normally '1' 
# Set it to '0'
BUNDLE_FROZEN: '0'

Ahora invoque bundle, en mi caso necesitaba actualizar una gema específica, por lo que este es mi comando

RAILS_ENV=production bundle update <whatever gem>

Probablemente deberías cambiarlo de nuevo después de la actualización, para que las cosas funcionen como esperas, después. De nuevo, esto probablemente no es compatible, y YMMV

 1
Author: Chewbarkla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-08 18:38:02

Me encontré con esta implementación de una aplicación Nesta después de algunas actualizaciones de gemas. Lo que funcionó para mí fue eliminar el Gemfile.bloquear , ejecutar bundle install para volver a generarlo, y desplegar de nuevo.

 0
Author: Yarin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-28 02:20:29

Me encontré con un problema similar, sin embargo, hice ambos bundle install y bundle update y Heroku todavía rechazó mi empuje.

Solucioné el problema simplemente eliminando Gemfile.bloquear y luego ejecutar bundle install de nuevo. Luego agregué, confirmé y empujé eso a mi repositorio git. Después de eso no tuve ningún problema empujando a Heroku.

 0
Author: ryanSrich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-14 15:20:23

Para heroku, no tienes que cambiar la sintaxis en el Gemfile. simplemente puede agregar BUNDLE_GITHUB__HTTPS (tenga en cuenta el doble guion bajo) como una variable de entorno y establecerla en true (en el panel de control de su aplicación heroku en la pestaña Settings en la sección Config Vars). esto cambiará el protocolo de git:// a https:// para todas estas solicitudes.

 0
Author: clairity,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-24 05:31:53

Recibí el mensaje de error al intentar enviar a Heroku. Encontré la siguiente solución arreglada.

  1. Git pull origin master
  2. Estado de Git
  3. Git commit
  4. Git push origin master
  5. Git push heroku master
 0
Author: Ben Strachan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-13 00:48:48

Este problema puede estar relacionado con submódulos que apuntan a versiones antiguas de código. Para mí, resolví este problema actualizando mis submódulos

Si tiene submódulos, intente ejecutar:

git submodule update --init

bundle install

 0
Author: Gerard Simpson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-12 06:13:34