Почему моя среда RubyGems отличается при использовании setuid от сценария upstart? - PullRequest
0 голосов
/ 08 января 2019

У меня проблема с тем, что моя среда RubyGems неверна при запуске приложения Rails из Upstart в Ubuntu. В моем сценарии Upstart я использую setuid www, затем запускаю скрипт-обертку, который в конечном итоге запускает Puma.

Из командной строки, как пользователь www, вывод gem env - это то, что я ожидаю:

  - GEM PATHS:
     - /var/lib/gems/2.5.0
     - /home/www/.gem/ruby/2.5.0
     - /usr/share/rubygems-integration/2.5.0
     - /usr/share/rubygems-integration/all

Если я запускаю gem env из сценария Upstart, после установки setuid www я получаю это:

  - GEM PATHS:
    - /var/lib/gems/2.5.0
    - /.gem/ruby/2.5.0
    - /usr/share/ruby

Это приводит к тому, что драгоценные камни устанавливаются не в том месте или не могут быть найдены, потому что они были установлены с помощью --user-install, помещая их в /home/www/.gem/.

На данный момент я могу явно установить $GEM_HOME и $GEM_PATH, но было бы разумнее просто полагаться на среду RubyGems по умолчанию для пользователя www.

1 Ответ

0 голосов
/ 08 января 2019

Проблема в том, что $HOME не устанавливается в сценарии Upstart;)

Добавьте env HOME=/home/www в сценарий запуска, и gem env выведет ожидаемые параметры среды.

...