Gerencie um servidor gem daemonizado com Deus

A estrutura de Deus de Tom Preston-Werner é, de fato, bastante divina. Veja como é fácil gerenciar um servidor gem privado ( geminabox ):

God.watch do |w|
w
.name = 'gemserver'
w
.dir = '/usr/local/gemserver'
w
.pid_file = "#{ENV['HOME']}/.god/pids/#{w.name}.pid"
ru
= File.expand_path `which rackup`
w
.start = "#{ru} -D #{w.dir}/config.ru -P #{w.pid_file}"
# w.stop = lambda { Process.kill(2, `lsof -i :9292`.chomp.to_i) }
w
.behavior :clean_pid_file
w
.keepalive
end

Agora posso executar comandos como:

god start gemserver
god status gemserver

god restart gemserver

Para explicar um pouco o código:

w.dir muda o diretório de trabalho antes de executar as ações, sem surpresa.

Definimos a variável ‘arquivo pid’, um local simples para armazenar o ID do processo, para garantir que os processos daemonizados (aqueles executados com -D) possam ser rastreados posteriormente.

Como estamos no diretório do projeto, podemos executar which rackuppara localizar o binário para sua gem de rackup local, independentemente de onde ele é mantido, o que é muito útil para aqueles que usam o Bundler, pois o caminho real pode variar com base no nome do diretório do pacote.

Agora pode usar o caminho absoluto correto para chamar , que é sensível a essas coisas! Temos que passar a opção com a localização do arquivo para convencer o Rack a realmente armazenar o arquivo lá para nós.w.startrackup-P

O w.stopcomando comentado não é necessário, mas poderia servir como um meio alternativo de encontrar o PID e encerrar manualmente o servidor, se quiséssemos fazer dessa forma. O padrão é uma função lambda que Deus usa que é inteligente o suficiente para matar o servidor para nós se já tivermos a localização correta do arquivo PID (é por isso que a definimos antes!).

w.behavior :clean_pid_file certifica-se de que apagamos o arquivo antigo após parar o servidor, para que não haja bagunça em nada se for executado novamente.

Use seu próprio servidor gem privado e mantenha seu sistema seguro! As gemas podem ser falsificadas e executar códigos maliciosos; desenvolvedores de qualidade liberam somas de verificação para que você saiba que são legítimas!