Определите дополнительный `$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, так как именно в этом вы обеспокоены. Это то, что вы контролируете.