Pergunta

Eu estou procurando maneiras de implantar um aplicativo Ruby on Rails (em execução no JRuby) para uma instância Tomcat para testar.

A instância tomcat está sendo executado em um servidor Solaris que eu posso ssh para. Eu olhei usando Capistrano, mas não parece ser muito lá fora, cerca de usá-lo para implantar no Tomcat, ou mesmo sobre a executá-lo sob JRuby, e eu continuar batendo erros em Capistrano devido ao ambiente Windows / JRuby meu PC está em execução (sim, é corporativa - não a minha escolha, mas eu tenho que viver com ele).

Eu estou usando warble para criar o arquivo .war, eo implanta aplicativos e funciona muito bem quando eu copiá-lo manualmente e implantá-lo. Eu estou querendo algo mais fácil e automatizado para realmente chegar lá.

Qualquer pessoa fez isso antes? Documentação sobre a web parece muito fina.

Foi útil?

Solução

Eu não tenho muita experiência com isso, então eu não sei se eu posso dar-lhe o melhor caminho, mas se Capistrano não funcionar, e você não pode ter uma ressonância magnética instalação separada apenas para executá-lo , você tem apenas algumas alternativas esquerda:

Tente executar Rake simples e escrever seu próprio destino de implementação: http://www.gra2.com/article. php / deploy-ruby-on-rails-aplicativos-ancinho

Ou uso Ant ou Maven.

Ou se é apenas um servidor você tem que implantar, você pode simplesmente cortar juntos dois scripts Ruby - que escutas no servidor para pedidos de desligamento / inicialização, e um local que você correr para: Enviar desligamento, scp sobre o arquivo, startup de envio.

A propósito, você já apresentou erros de integração que você encontrar com Capistrano para a equipe JRuby? Tenho certeza de que ficaria feliz em ter qualquer contribuição. :)

Outras dicas

Estou executando um projeto Rails usando JRuby e implantação de um servidor Tomcat. Eu escolhi para implantar com Capistrano porque automatiza quase tudo. Eu tive que fazer algumas pequenas modificações do ciclo de vida de implantação de Capistrano, a fim de obtê-lo para ser executado em Tomcat:

Passo 1: Eu criei uma tarefa warble para ser executado no servidor depois de Capistrano atualiza o código:

desc "Run the warble command to deploy the site"
namespace(:deploy) do
  task :warble do
    run ". ~/.profile;cd #{release_path};warble"
  end
end

E viciado-lo em Capistrano ciclo de vida usando:

after 'deploy:update_code', 'deploy:warble'

servidor Meus Tomcat tem um apontador link simbólico para o diretório #{release_path}/tmp/war criado por berne. Se não o fizer assim, você pode facilmente modificar a tarefa warble para mover o arquivo de guerra para o diretório Tomcat vez.

Passo 2: I anulou as tarefas deploy:start e deploy:stop para que eles lançar o servidor Tomcat em vez de um servidor Mongrel:

desc "Starts the Tomcat Server"
namespace(:deploy) do
  task :start do
    sudo "#{tomcat_home}/bin/startup.sh"
  end
end

desc "Shutdown the Tomcat Server"
namespace(:deploy) do
  task :stop do
    sudo "#{tomcat_home}/bin/shutdown.sh"
  end
end

Eu corro tarefas Capistrano usando ressonância magnética em vez do intérprete JRuby.

Talvez valesse a pena olhar para 'Vlad o implementador' acrescenta remote_task de Rake que lhe permite executar tarefas em um servidor remoto. Pessoalmente no entanto eu prefiro ter uma tarefa Rake padrão no servidor, ssh e executar essa tarefa - que então fazer um svn checkout, tornar o arquivo WAR, o que quer ...

Eu provavelmente usar Ant para isso. Afinal de contas, é apenas mais um arquivo WAR, certo? Eu não sei qual a versão do Tomcat que você está usando, mas a versão 4.1x vem com uma tarefa Ant para implantação para Tomcat .

Há algumas receitas Capistrano para implantar no Tomcat - Eu construí um em uma jóia chamado capistrano-tomcat . É preciso um WAR que você construiu (provavelmente com Toutinegra ) e implanta e inicia uma instância Tomcat em um servidor remoto.

A fonte está em cima Github: http://github.com/rhunter/capistrano-tomcat

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top