Определите дополнительный `$PATH` для Passenger или nginx

У меня есть сервер с nginx и Passenger, обслуживающий приложение Ruby on Rails. Он использует Bundler.

Где-то в этом стеке $PATH устанавливается на /var/www/APPNAME/shared/bundle/ruby/1.8/bin/, Этот каталог действительно содержит исполняемые гемы.

Но мне нужно, чтобы мое заявление также /usr/bin доступно в его $PATH, Более конкретно: мне нужно, чтобы он мог работать idendtify, convert а также mogrify; команды imagemagick.

На данный момент, я символически связал эти двоичные файлы /var/www/APPNAME/shared/bundle/ruby/1.8/bin/:

ls /var/www/APPNAME/shared/bundle/ruby/1.8/bin/ -ahl
#...
lrwxrwxrwx 1 root root   16 May  8 16:22 convert -> /usr/bin/convert
-rwxr-xr-x 1 ber  root  379 Jan 11 08:58 erubis
#...

Хотя это скорее быстрый взлом, чем реальное решение.

Как я могу назначить дополнительные каталоги $PATH? И где мне это делать? Пассажир, nginx, приложение Rails?

1 ответ

Рубиновые варианты - хороший способ сделать это. Укажите, что в $LOAD_PATH есть /usr/bin.

-Idirectory     specify $LOAD_PATH directory (may be used more than once)

Это то, для чего оно существует, в конце концов.

Еще одна вещь, которую вы можете сделать, это поместить каталог в переменную $: global psuedo.

$:.push("/usr/bin")

Это будет подходить везде, где у вас есть настройки среды в вашем приложении.

Я бы, вероятно, сделал это для самого приложения Rails, так как именно в этом вы обеспокоены. Это то, что вы контролируете.

Другие вопросы по тегам