Подтвердить что ты не робот

Как сообщить поставщику, где находится Gemfile?

Я пытаюсь запустить Ruby script из cron.

script использует Bundler для управления зависимостями драгоценных камней. Поскольку cron не работает в $PWD, я получаю ошибку "Не могу найти ошибку Gemfile" от Bundler каждый раз, что имеет смысл, поскольку Gemfile не находится в пути к потоку при запуске cron.

Есть ли способ сообщить Bundler использовать Gemfile не в текущем пути?

4b9b3361

Ответ 1

Лучше всего было бы сделать cd в соответствующем каталоге в вашем cron. Вы также можете использовать переменную среды BUNDLE_GEMFILE, чтобы указать на Gemfile. Пожалуйста, сообщите нам, если у вас есть проблемы с BUNDLE_GEMFILE.

Ответ 2

У вас может быть основной 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, я предпочитаю не делать этого, потому что клонам уже достаточно сложно читать и поддерживать.