ruby on rails - run - ¿Cómo uso el archivo de configuración de puma?
pumactl start (4)
Esto funcionará:
puma -C config/puma.rb
Seguí esta guía que documenta el archivo puma.rb
que está almacenado dentro del directorio de configuración de la aplicación.
La guía es un poco chocada, pero esto es lo que supongo que hace el archivo puma.rb
En lugar de ejecutar comandos locos como este para que puma se ejecute en un socket específico:
bundle exec puma -e production -b unix:///var/run/my_app.sock
Solo puede especificar el puerto, el pid, la sesión y otros parámetros en el archivo puma.rb
esta manera:
rails_env = ENV[''RAILS_ENV''] || ''production''
threads 4,4
bind "/home/starkers/Documents/alpha/tmp/socket"
pidfile "/home/starkers/Documents/alpha/tmp/pid"
state_path "/home/starkers/Documents/alpha/tmp/state"
activate_control_app
Y luego podrías ingresar a la raíz de la aplicación y ejecutar un comando simple como
''puma''
y los parámetros establecidos en puma.rb
serían seguidos. Desafortunadamente eso no parece funcionar para mí.
Al menos, ejecuté puma
dentro de la raíz de una pequeña aplicación de prueba, y no apareció ningún archivo .sock
en /home/starkers/Documents/alpha/tmp/sockets
¿eso significa que no está funcionando?
¿Cómo consigo este trabajo? Estoy en una máquina de desarrollo local, ¿podría eso causar este error de alguna manera? ¿Hay algún parámetro que deba pasar al ejecutar?
puma
?
Necesita decirle a puma dónde encontrar su archivo de rackup
puede hacerlo colocando esto en su configuración:
rackup DefaultRackup
Parece que una solución para esto se fusiona en master: https://github.com/puma/puma/pull/271
Si hay un entorno definido, como es su caso en el ejemplo, el archivo de configuración se lee desde config/puma/[environment].rb
y no config/puma.rb
Simplemente mueva su config/puma.rb
a config/puma/production.rb
y debería funcionar.
Lea la documentación de Puma para más detalles: Archivo de configuración
También me quedé atascado tratando de encontrar la documentación en el archivo de configuración para puma pero encontré útil el archivo todo-en-uno config.ru . Lo he formateado aquí para futuras referencias:
# The directory to operate out of.
# The default is the current directory.
directory ''/u/apps/lolcat''
# Load “path” as a rackup file.
# The default is “config.ru”.
rackup ''/u/apps/lolcat/config.ru''
# Set the environment in which the rack''s app will run. The value must be a string.
# The default is “development”.
environment ''production''
# Daemonize the server into the background. Highly suggest that
# this be combined with “pidfile” and “stdout_redirect”.
# The default is “false”.
daemonize
daemonize false
# Store the pid of the server in the file at “path”.
pidfile ''/u/apps/lolcat/tmp/pids/puma.pid''
# Use “path” as the file to store the server info state. This is
# used by “pumactl” to query and control the server.
state_path ''/u/apps/lolcat/tmp/pids/puma.state''
# Redirect STDOUT and STDERR to files specified. The 3rd parameter
# (“append”) specifies whether the output is appended, the default is
# “false”.
stdout_redirect ''/u/apps/lolcat/log/stdout'', ''/u/apps/lolcat/log/stderr''
stdout_redirect ''/u/apps/lolcat/log/stdout'', ''/u/apps/lolcat/log/stderr'', true
# Disable request logging.
# The default is “false”.
quiet
# Configure “min” to be the minimum number of threads to use to answer
# requests and “max” the maximum.
# The default is “0, 16”.
threads 0, 16
# Bind the server to “url”. “tcp://”, “unix://” and “ssl://” are the only
# accepted protocols.
# The default is “tcp://0.0.0.0:9292”.
bind ''tcp://0.0.0.0:9292''
bind ''unix:///var/run/puma.sock''
bind ''unix:///var/run/puma.sock?umask=0777''
bind ''ssl://127.0.0.1:9292?key=path_to_key&cert=path_to_cert''
# Listens on port 7001
# The default is 9292
port 7001
# Instead of “bind ''ssl://127.0.0.1:9292?key=path_to_key&cert=path_to_cert''” you
# can also use the “ssl_bind” option.
ssl_bind ''127.0.0.1'', ''9292'', { key: path_to_key, cert: path_to_cert }
# Code to run before doing a restart. This code should
# close log files, database connections, etc.
# This can be called multiple times to add code each time.
on_restart do
puts ''On restart...''
end
# Command to use to restart puma. This should be just how to
# load puma itself (ie. ''ruby -Ilib bin/puma''), not the arguments
# to puma, as those are the same as the original process.
restart_command ''/u/app/lolcat/bin/restart_puma''
# === Cluster mode ===
# How many worker processes to run.
# The default is “0”.
workers 2
# Code to run when a worker boots to setup the process before booting
# the app.
# This can be called multiple times to add hooks.
on_worker_boot do
puts ''On worker boot...''
end
# === Puma control rack application ===
# Start the puma control rack application on “url”. This application can
# be communicated with to control the main server. Additionally, you can
# provide an authentication token, so all requests to the control server
# will need to include that token as a query parameter. This allows for
# simple authentication.
# Check out https://github.com/puma/puma/blob/master/lib/puma/app/status.rb
# to see what the app has available.
activate_control_app ''unix:///var/run/pumactl.sock''
activate_control_app ''unix:///var/run/pumactl.sock'', { auth_token: ''12345'' }
activate_control_app ''unix:///var/run/pumactl.sock'', { no_token: true }
Esos ajustes luego irían en un archivo ruby (por ejemplo, config / puma.rb) y luego, como dice Starkers, puedes ejecutarlo con
puma -C config / puma.rb