ruby on rails - rails - Error de Bundler en la implementación
gem install json 1.8 3 error (3)
Actualmente estoy usando Guard, es decir, guard-coffeescript gema para compilar mi javascript (y en el futuro probablemente agregaré más tareas de guarda) en mi sistema de desarrollo OSX. rb-fsevent
gema rb-fsevent
a mi Gemspec, ahora vi que en muchos Gemspecs se agrega con una declaración if como esta:
gem ''rb-fsevent'', :require => false if RUBY_PLATFORM =~ /darwin/i
Intentando implementarlo en mi entorno de bundle install --deployment
/ producción, que se ejecuta en Linux, la secuencia de comandos ejecutada en el servidor utiliza la bundle install --deployment
del bundle install --deployment
resultados de la bundle install --deployment
se encuentran en la siguiente excepción:
# bundle install --deployment
You have modified your Gemfile in development but did not check
the resulting snapshot (Gemfile.lock) into version control
You have deleted from the Gemfile:
* rb-fsevent
¿Hay alguna forma de solucionar este problema o simplemente debo eliminar el ''if'' para poder implementarlo en mi sistema y, a su vez, instalar una gema que no sirve para nada en una plataforma que no sea OSX?
-
edición: ejecuto bundle install
antes de implementarlo en mi entorno de pruebas y ejecuto la bundle check
después de la primera vez que falló. Lo tengo funcionando después de quitar la sentencia if ...
Como se describe en
https://github.com/guard/guard
la solución es simplemente
group :development do
gem ''rb-inotify'', :require => false
gem ''rb-fsevent'', :require => false
gem ''rb-fchange'', :require => false
end
Tuve exactamente el mismo problema y la solución de Luke lo solucionó, sin embargo, solo después de haber eliminado :require => false if RUBY_PLATFORM =~ /darwin/i
cadena que se usa comúnmente.
Tuve un problema similar. Si estás usando capistrano puedes configurar la siguiente opción:
set :bundle_without, [:darwin, :development, :test]
Luego envuelve tu línea de gemas ''rb-fsevent'' en un grupo llamado Darwin. Algo como esto debería funcionar bien:
group :test, :darwin do
gem ''rb-fsevent''
end
Esto hace que Bundler haga esto en el servidor:
bundle --without darwin development test
Lo que significa que ignora esos grupos en el Gemfile.lock. Lo que estaba haciendo haría que su máquina OS X y su servidor crearan diferentes archivos de bloqueo resultantes. Por eso se quejaba.