Как запустить 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.
Оцените любую помощь по этому поводу:)
Ответы
Ответ 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.