1

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

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

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

На данный момент я привел ссылки на эти двоичные файлы 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 ответ1

1

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

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

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .