Rails 3.2: 12-факторное приложение

В разделе ведения журналов манифеста веб-приложения "Приложение Twelve Factor" предлагается, чтобы каждый процесс отправлял журналы в STDOUT. .

Если я выполняю разработку на Rails локально с процессом для веб-сервера («сервер rails») и процессом Sidekiq для фоновых заданий («bundle exec sidekiq»), я бы хотел, чтобы журналы отображались в одном потоке, но я по-прежнему хотел бы использовать STDOUT в своих моделях, представлениях, контроллерах и рабочих процессах Sidekiq.

Есть ли способ или инструмент, позволяющий объединить два потока STDOUT вместе, чтобы журналы сохранялись в потоке, чтобы их можно было просмотреть, завершив один файл?


person Jay Godse    schedule 10.09.2013    source источник
comment
+1 за 12-факторное приложение, спасибо!   -  person dax    schedule 10.09.2013


Ответы (2)


Используйте мастера. Вы определяете свои процессы в Procfile

web:    rails server
worker: bundle exec sidekiq

и запустите их с помощью foreman start.

Дальнейшее чтение:

person schlamar    schedule 30.09.2013

Я ожидаю, что это будет зависеть от того, на какой ОС вы работаете.

На unix-подобной консоли вы можете запустить оба процесса в фоновом режиме на одной консоли:

> rails server &
> bundle exec sidekiq &

Это выдаст стандартный вывод для обоих на текущую консоль, но вам нужно будет явно закрыть их с помощью pid, например. kill `pgrep -f rails`

В качестве альтернативы вы можете запустить каждый из них и добавить их вывод в файл, который вы затем можете сохранить (каждый из них в отдельных окнах консоли):

> rails server >> combined_output.txt
> bundle exec sidekiq >> combined_output.txt
> tail -f combined_output.txt
person Shadwell    schedule 10.09.2013