définir les options du serveur à l’intérieur du fichier de assembly

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 ).