Ответ 1
Лучше всего было бы сделать cd
в соответствующем каталоге в вашем cron. Вы также можете использовать переменную среды BUNDLE_GEMFILE
, чтобы указать на Gemfile. Пожалуйста, сообщите нам, если у вас есть проблемы с BUNDLE_GEMFILE
.
Я пытаюсь запустить Ruby script из cron.
script использует Bundler для управления зависимостями драгоценных камней. Поскольку cron не работает в $PWD
, я получаю ошибку "Не могу найти ошибку Gemfile" от Bundler каждый раз, что имеет смысл, поскольку Gemfile не находится в пути к потоку при запуске cron.
Есть ли способ сообщить Bundler использовать Gemfile не в текущем пути?
Лучше всего было бы сделать cd
в соответствующем каталоге в вашем cron. Вы также можете использовать переменную среды BUNDLE_GEMFILE
, чтобы указать на Gemfile. Пожалуйста, сообщите нам, если у вас есть проблемы с BUNDLE_GEMFILE
.
У вас может быть основной script изменить его каталог:
Dir.chdir File.dirname(__FILE__)
Возможно, вам придется настроить его, используя File.expand_path
, чтобы получить корневой каталог приложения (где находится Gemfile
). Предположим, что ваш script - /apps/myapp/bin/main.rb
; строка chdir
:
Dir.chdir File.expand_path('../..', __FILE__)
Конечно, вы должны убедиться, что ваше приложение не сломается из-за chdir - но это не должно, если вы cd
-инг в cron.
Если script является демонами и вы хотите, чтобы он был изменен на корневой каталог /
во время нормальной работы, вы можете сделать это после вызова Bundler.setup
или Bundler.require
.
Пока вы могли делать cd
в cron, я предпочитаю не делать этого, потому что клонам уже достаточно сложно читать и поддерживать.