Domanda

Sto cercando dei modi per distribuire un'app Ruby on Rails (in esecuzione su JRuby) in un'istanza Tomcat per il test.

L'istanza di Tomcat è in esecuzione su un server Solaris a cui posso SSH. Ho esaminato l'utilizzo di Capistrano, ma sembra che non ci sia molto là fuori sull'utilizzo per distribuirlo su Tomcat, o addirittura su eseguirlo con JRuby, e continuo a colpire i bug in Capistrano a causa dell'ambiente Windows / JRuby il mio PC è in esecuzione (sì, è aziendale - non è una mia scelta, ma devo conviverci).

Sto usando warble per compilare il file .war e l'app si distribuisce e funziona bene una volta copiato e distribuito manualmente. Vorrei qualcosa di più facile e più automatizzato per arrivarci davvero.

Qualcuno l'ha già fatto? La documentazione sul Web sembra piuttosto sottile.

È stato utile?

Soluzione

Non ho molta esperienza su questo, quindi non so se posso darti il ??modo MIGLIORE, ma se Capistrano non funziona e non puoi avere un'installazione MRI separata solo per eseguirlo , ti restano solo poche alternative:

Prova a eseguire semplicemente Rake e scrivi la tua destinazione di distribuzione: http://www.gra2.com/article. php / deploy-ruby-on-rails-applicazioni-rake

Oppure usa Ant o Maven.

O se si deve distribuire solo UN server, è possibile hackerare insieme due script Ruby: uno in ascolto sul server per le richieste di arresto / avvio e un locale in cui si esegue: Invia arresto, scp sul file, invia avvio.

A proposito, hai inviato al team JRuby qualche bug di integrazione che trovi con Capistrano? Sono sicuro che sarebbero felici di avere un contributo. :)

Altri suggerimenti

Sto eseguendo un progetto Rails utilizzando JRuby e la distribuzione su un server Tomcat. Ho scelto di implementare con Capistrano perché automatizza praticamente tutto. Ho dovuto apportare alcune modifiche minori al ciclo di vita della distribuzione di Capistrano per farlo funzionare su Tomcat:

Passaggio 1: ho creato un'attività warble da eseguire sul server dopo che Capistrano aggiorna il codice:

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

E l'ho collegato al ciclo di vita di Capistrano usando:

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

Il mio server Tomcat ha un collegamento simbolico che punta alla directory # {release_path} / tmp / war creata da warble. Se non ti piace, puoi facilmente modificare l'attività warble per spostare invece il file war nella directory Tomcat.

Passaggio 2: ho ignorato le attività deploy: start e deploy: stop in modo che inizino il server Tomcat anziché un server 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

Eseguo le attività di Capistrano utilizzando la risonanza magnetica anziché l'interprete JRuby.

Potrebbe valere la pena dare un'occhiata a "Vlad the deployer" che aggiunge remote_task a Rake che consente di eseguire attività su un server remoto. Personalmente, tuttavia, preferisco avere un'attività Rake standard sul server, avviare ed eseguire quell'attività - che poi farebbe un checkout svn, creerebbe il file WAR, qualunque cosa ...

Probabilmente userei Ant per questo. Dopotutto, è solo un altro file WAR, giusto? Non so quale versione di Tomcat stai utilizzando, ma la versione 4.1x viene fornita con un'attività Ant per la distribuzione a Tomcat .

Esistono alcune ricette Capistrano per la distribuzione su Tomcat: ne ho incorporato una in una gemma chiamata capistrano-tomcat . Prende una GUERRA che hai creato (probabilmente con Warbler ) e distribuisce e avvia un'istanza Tomcat su un server remoto.

La fonte è su Github: http://github.com/rhunter/capistrano-tomcat

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top