Подтвердить что ты не робот

Как запустить rails puma server с конфигурационным файлом с помощью 'rails s puma'

Я могу запустить puma-сервер в rails, используя либо rails s puma, либо просто puma.

В соответствии с этим ответом запуск rails s puma делает сервер осведомленным о среде рельсов. Он показывает ошибки сервера и т.д., Что только puma не работает.

Я хочу настроить файл конфигурации следующим образом:

конфигурации /puma.rb

workers Integer(ENV['PUMA_WORKERS'] || 3)
threads Integer(ENV['MIN_THREADS']  || 1), Integer(ENV['MAX_THREADS'] || 16)

rackup      DefaultRackup
port        ENV['PORT']     || 3000
environment ENV['RACK_ENV'] || 'development'

...

Если я запустил puma -C config/puma.rb, все будет работать. Однако, если я запустил rails s puma, я не могу решить, как задать параметры для puma. Я пробовал следующее:

rails s puma                     # Puma server works but no config file is passed in.
rails s puma -C config/puma.rb   # Invalid option -C
rails s puma -c config/puma.rb   # Undefined method 'workers'. So rails is
                                 # trying to use the config instead of puma?

Я также попытался поместить файл конфигурации в config/puma/development.rb в соответствии с puma docs.

Оцените любую помощь по этому поводу:)

4b9b3361

Ответ 1

Невозможно использовать rails s puma для загрузки вашего конфигурационного файла puma, как подтверждено здесь https://github.com/puma/puma/issues/512, вы можете захотеть взгляните на аналогичный вопрос здесь Как мне получить "пуму" для запуска, автоматически, когда я запускаю сервер "rails" (например, Thin), где это обсуждается

Ответ 2

Я обнаружил, что использование Foreman (https://github.com/ddollar/foreman) является хорошим обходным решением для этого и дает дополнительную гибкость.

Heroku написал хороший путеводитель для этого (https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server). Ниже приведено очень быстрое начало.

Шаг 1: установите Foreman. Пример для Mac OS X ниже, полное руководство на сайте Foreman

$ brew install foreman

Шаг 2. Добавьте это в свой Gemfile:

gem 'puma'

Шаг 3. Создайте файл Procfile:

web: bundle exec puma -C config/puma.rb

Шаг 4. Теперь запустите приложение, используя

$ foreman start

00:36:05 web.1  | started with pid 19869
00:36:05 web.1  | [19869] Puma starting in cluster mode...
00:36:05 web.1  | [19869] * Version 2.11.1 (ruby 2.2.1-p85), codename: Intrepid Squirrel
00:36:05 web.1  | [19869] * Min threads: 1, max threads: 1
00:36:05 web.1  | [19869] * Environment: development
00:36:05 web.1  | [19869] * Process workers: 1
00:36:05 web.1  | [19869] * Preloading application
00:36:07 web.1  | [19869] * Listening on tcp://0.0.0.0:3000
00:36:07 web.1  | [19869] Use Ctrl-C to stop
00:36:07 web.1  | [19869] - Worker 0 (pid: 19870) booted, phase: 0

Ответ 3

К сожалению, вы не можете. Сегодня мне пришлось заставить Puma работать с ssl в моей среде dev, поэтому я отредактировал файл config/puma.rb в моем приложении rails (Rails 5) и добавил:

ssl_bind '127.0.0.1', '3000', {
   key: 'path_to_you_key_file', #/Users/DevRuby/.ssh/server.key
   cert: 'path_to_yout_cert_file', #/Users/DevRuby/.ssh/server.crt
   verify_mode: 'none' #fix errors due to self-signed certificate
}

И добавил в мою конфигурацию /environment/development.rb следующую строку, чтобы включить отправку журналов в STDOUT:

config.logger = ActiveSupport::TaggedLogging.new(ActiveSupport::Logger.new(STDOUT))

И вместо запуска моего приложения с использованием #rails s, я теперь использую команду #puma, которая загружает все настройки в конфигурационном файле config/puma.rb.