У нас есть установка rails sidekiq для запуска заданий.
Я пытаюсь сделать работу как можно более переносимой, отделив реальный скрипт от вызова sidekiq.
Таким образом, sidekiq вызывает небольшое задание-заглушку, а обратная кавычка вызывает фактический сценарий и фиксирует вывод.
Эта часть работает нормально. Но sidekiq выполняет задание как root, а не как пользователь, в среде которого есть все части rvm, ruby и gemsets. Я хотел бы использовать существующие пользовательские рубины и драгоценные камни rvm.
в вызывающем скрипте (задание sidekiq):
output = `source /path/to/dudes/rvm/environment.file && rvm use \
2.0.0-pxxx@default do ruby /path/to/actual/script.rb`
и вызываемый скрипт запускается, но как root, и он, очевидно, не работает так, как я предполагал, потому что мои требования не найдены.
Если я возьму ту же командную строку и запущу ее от имени локального пользователя из BASH, у которого также нет наборов драгоценных камней, то, похоже, это сработает.
Я пробовал просто обратную галочку, называя это как сценарий оболочки
output = `/path/to/actual/script.rb`
...и в вызываемом скрипте различные комбинации шебангов.
#!/usr/bin/env ruby
#!/usr/bin/env rvm use everything i found on the internets
Теперь я получил скрипты ruby для запуска в средах с заданиями выскочки Linux с помощью оболочек скриптов bash, например: http://techhelplist.com/index.php/tech-tutorials/43-linux-adventures./85-upstart-ruby-job-with-rvm
Но я пытаюсь найти способ сделать это без оберток. Является ли это возможным?