ruby - gems - que hace bundle install
¿Cómo decirle a Bundler dónde está el Gemfile? (2)
Estoy tratando de ejecutar un script de Ruby de cron.
El script usa Bundler para gestionar dependencias de gemas. Como cron no se ejecuta en $PWD
, recibo un error ''No se pudo encontrar el Gemfile'' de Bundler cada vez, lo que tiene sentido ya que Gemfile no está en la ruta actual cuando se ejecuta desde cron.
¿Hay alguna manera de decirle a Bundler que use un Gemfile que no esté en la ruta actual?
Lo mejor que puede hacer es ingresar en el directorio en cuestión en su cron. También puede usar la variable de entorno BUNDLE_GEMFILE
para apuntar al Gemfile. Háganos saber si tiene algún problema con BUNDLE_GEMFILE
.
Podría hacer que el script principal cambie su dir:
Dir.chdir File.dirname(__FILE__)
Es posible que tenga que modificarlo usando File.expand_path
para obtener el directorio raíz de su aplicación (donde está el Gemfile
). Supongamos que su script es /apps/myapp/bin/main.rb
; la linea chdir
seria:
Dir.chdir File.expand_path(''../..'', __FILE__)
Por supuesto, debes asegurarte de que tu aplicación no se rompa debido a chdir, pero no debería hacerlo si estás grabando el cron.
Si el script es un demonio y desea que se cambie al directorio raíz /
durante el funcionamiento normal, puede hacerlo después de llamar a Bundler.setup
o Bundler.require
.
Si bien puedes hacer cd
en el cron, prefiero no hacerlo, porque los crons ya son lo suficientemente difíciles de leer y mantener.