Это мое веб-приложение:
class Front < Sinatra::Base
configure do
set :server, :puma
end
get '/' do
'Hello, world!'
end
end
Я начинаю так (пожалуйста, не предлагайте использовать Rack):
Front.start!
Вот мой объект конфигурации для Puma, который я не знаю, как ему передать:
require 'puma/configuration'
Puma::Configuration.new({ log_requests: true, debug: true })
Серьезно, как?
Я просто попробую угадать. Вы каким-то образом запускали Puma с Sinatra, и вам нужно настроить Puma. Хорошо, используйте опцию CLI -c path ИЛИ файл config/puma.rbgithub.com/puma/puma#configuration
@PavelMikhailyuk Я не запускаю Puma / Sinatra из командной строки, вот в чем дело. Я запускаю его из другого контекста Ruby, просто используя Front.start!. Итак, командной строки нет. Мне просто нужно передать объект конфигурации в Puma.
config/puma.rb пробовали? Если вам нужна динамическая конфигурация, ответ @ user2795430 подойдет.
И хороший вопрос: Почему запускается не из cmd?
@PavelMikhailyuk зацени: github.com/zold-io/zold/blob/0.15.0/lib/zold/commands/…
Омг, вы использовали какой-нибудь переводчик кода Java-> Ruby? : D
Серьезно, я считаю, что его можно переделать в cli-first. Судя по вашему коду, он выглядит как java, Slop вместо Thor и т. д., Я думаю, вы не уделили достаточно времени, чтобы посмотреть существующие исходные коды фреймворка. ИМХО конечно.

Вы хотите передать именно объект или просто конфигурацию в целом? Для последнего варианта это возможно, но 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!
Да, потому что Puma ожидает, что файл config.ru будет. На вашем месте я бы искал другой путь. Что ты вообще хочешь? Для регистрации вашего запроса или для регистрации запроса именно через Puma? Я думаю, что первое возможно, но не уверен насчет последнего.
Я хочу иметь возможность настраивать сервер. Часть логирования - это просто пример, есть много других параметров конфигурации, которые мне нужно покрутить.
У вас уже есть решение (передать объект конфигурации) для реальной проблемы, но вы не сказали, в чем проблема. Это не так. Расскажите нам о реальной проблеме, и мы предложим решение.
Конфигурация тесно связана со способом запуска сервера 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.
Надеюсь, это поможет.
Я не предлагаю использовать Rack, потому что вы уже используете его.