Как передать Puma :: Конфигурация в Синатру? - PullRequest
0 голосов
/ 21 октября 2018

Это мое веб-приложение:

class Front < Sinatra::Base
  configure do
    set :server, :puma
  end
  get '/' do
    'Hello, world!'
  end 
end

Я запускаю его так (не предлагайте использовать Rack, пожалуйста):

Front.start!

Вот мой объект конфигурации дляПума, которую я не знаю, как пройти к ней:

require 'puma/configuration'
Puma::Configuration.new({ log_requests: true, debug: true })

Серьезно, как?

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Конфигурация тесно связана с тем, как вы запускаете puma сервер.

Стандартный способ запуска puma - puma CLI.Для настройки puma необходимо указать файл конфигурации config/puma.rb или config/puma/<environment>.rb (см. пример ).

Но вы спросили, как передать объект Puma::Configuration в puma,Интересно, зачем вам это нужно, но AFAIK вам нужно программно запустить puma сервер в коде вашего приложения с Puma::Launcher (см. исходный код )

conf = Puma::Configuration.new do |user_config|
  user_config.threads 1, 10
  user_config.app do |env|
    [200, {}, ["hello world"]]
  end
 end
Puma::Launcher.new(conf, events: Puma::Events.stdio).run

user_config.app может бытьлюбой вызываемый объект (совместимый с Rack интерфейсом), например приложение Sinatra.

Надеюсь, что это полезно.

0 голосов
/ 22 октября 2018

Вы хотите передать точно объект или просто конфигурацию в целом?Для последнего варианта это возможно, но Puma все равно ничего не запишет (я не уверен, но, похоже, вы беспокоитесь о настройках регистрации в Puma).

#!/usr/bin/env ruby

# frozen_string_literal: true

require 'bundler/inline'

gemfile(true) do
  gem 'sinatra'
  gem 'puma'
  gem 'openssl'
end

require 'sinatra/base'

class Front < Sinatra::Base
  configure do
    set :server, :puma
    set :server_settings, log_requests: true, debug: true, environment: 'foo'
  end

  get '/' do
    'Hello, world!'
  end
end

Front.start!
...