J’essaie de définir les options du serveur sur le port IE, l’hôte, etc., mais je ne trouve rien sur la façon de procéder depuis le fichier config.ru
.
J’ai essayé de mettre les options de configuration dans un hash et de faire ensuite:
configure { set :server, config[:server][:handler].to_sym } Rack::Handler.default.run(App, config[:server])
Aussi essayé:
Rack::Handler::pick(['puma']).run App, config[:server]
et même:
configure { set :server, config[:server].delete(:handler).to_sym }
afin que le gestionnaire ne soit pas dans le serveur config hash et encore …
pas de dé.
config hash est:
{ :handler => "puma", :host => "127.0.0.1", :port => 3000, :threads => "0:16", :verbose => true }
Mais la configuration de hachage est simplement ignorée, je mets le port à 3000
mais l’application se charge avec 8080
par défaut.
Il y a aussi des erreurs sur le fait qu’il n’y ait pas de commande de run
présente (eh bien évidemment, je ne l’utilise pas).
Donc, un correctif pour ça serait aussi une bonne chose.
Je suis sûr que c’est une bonne façon de le faire, mais pourquoi est-il si difficile de le trouver documenté? J’ai fait autant de termes de recherche dans Google que je peux le penser et pourtant, rien de tout à fait correct ne revient.
Ce n’est pas bien documenté car la plupart des gens ne font pas ce que vous essayez de faire. 🙂 Les gens stockent généralement leur configuration Puma dans config / puma.rb ou la transmettent sur la ligne de commande, par exemple dans Procfile.
Je vais aller sur une twig ici et supposer que votre App
est une application Sinatra ou quelque chose de similaire. Le problème principal lors de la tentative de définition de ces options dans un bloc Sinatra configure {}
est qu’au moment où le rackage exécute la classe et exécute ces instructions, il est déjà trop tard pour définir des parameters tels que le port et la taille du pool de threads. En ce qui concerne la méthode d’ run
manquante, je pense que vous voulez juste run App
dans config.ru. Vous ne savez pas ce que vous allez faire là-bas.
Vous pouvez dire à rackup d’utiliser Puma en ajoutant ceci en haut du fichier:
#\ -s Puma
Si vous souhaitez définir le port ou toute autre option de assembly, vous pouvez le faire comme suit:
#\ -s Puma -p 3000
ou, pour les options spécifiques à Puma:
#\ -s Puma -p 3000 -O Threads=0:16 -O Verbose=true
Ceci est (principalement) documenté dans le README de Puma ici et ici .
Une autre option consiste à ignorer complètement le racking et config.ru et à tout construire dans votre application Sinatra:
require 'sinatra/base' require 'puma' class App < Sinatra::Application configure do set :server, :puma set :port, 3000 set :server_settings, :Threads => '0:16', :Verbose => true end run! if $0 == app_file end
Ensuite, vous pouvez simplement exécuter votre application comme n’importe quel script Ruby normal, par exemple ruby app.rb
À la fin de la journée, je vous recommande vivement d’explorer la création d’un fichier de configuration Puma et de l’utiliser à la place. C’est plus simple, plus propre et plus compréhensible. Si vous devez extraire les parameters Puma de l’environnement ou du résultat d’une autre méthode ou d’un autre processus, vous pouvez le faire ici. Bonne chance.
Vous pouvez spécifier des options sur une ligne avec #\
dans config.ru
(ce doit être la première ligne de ce type). Vous les spécifiez comme si vous rackup
options de ligne de commande pour le rackup
:
#\ -s puma -o 127.0.0.1 -p 3000 -O Threads=0:16 -O Verbose # require everything and set up middleware etc. run MyApp
Les documents pour cela sont cachés sur le wiki .
Vérifiez rackup -s puma -h
pour les options que vous pouvez utiliser. -O
passe l’option au serveur que vous utilisez (Puma semble accepter les Threads
et les Verbose
).