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 rackup
para 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.start
rackup
-P
O w.stop
comando 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!