2011-09-14 6 views
3

Je travaille sur Capistrano pour publier mon application PlayFramework, mais j'ai quelques problèmes avec la commande d'exécution.Capistrano et PlayFramework

Qu'est-ce qui se passe est que bouchon exécute la commande de démarrage de jeu et il est semble être mise à feu, mais quand je fais un

ps aux | grep java 

Il n'y a pas de jeu app course.

Si je copie la commande à partir de la sortie cap et l'exécute localement sur le serveur, il fonctionne correctement.

La commande capistrano run tue-t-elle le sous-processus en cours de lancement?

Comment empêcher le capistrano de tuer le processus?

Mon deploy.rb

default_run_options[:pty] = true 
set :application, "Intranet" 
set :domain, "intranet.example.com" 
set :deploy_to, "/srv/#{domain}" 
set :play_path, "/usr/local/play/play" 
set :shared_path, "#{deploy_to}/shared" 
set :app_pid, "#{shared_path}/pids/server.pid" 
set :app_path, "#{deploy_to}/current" 

set :scm, :git 
set :user, "myuser" 
set :repository, "[email protected]:intranet.git" 

ssh_options[:forward_agent] = true 
set :deploy_via, :remote_cache 
set :keep_releases, 3 

role :web, domain 
role :app, domain 
role :db, domain, :primary => true 

namespace :deploy do 
    task :start do 
    run "rm -f #{app_pid};#{play_path} start #{app_path} --deps --pid_file=#{app_pid} --%prod" 
    end 

    task :restart do 
    stop 
    start 
    end 

    task :stop do 
    run "#{play_path} stop #{app_path} --pid_file=#{app_pid}" 
    end 
end 

namespace :play do 
    desc "view running play apps" 
    task :viewprocess do 
    run "#{sudo} ps -ef | grep 'play/framework'" 
    end 

    desc "kill play processes" 
    task :kill do 
    run "#{sudo} ps -ef | grep 'play/framework' | grep -v 'grep' | awk '{print $2}'| xargs -i kill {} ; echo ''" 
    end 

    desc "view logfiles" 
    task :tail_logs, :roles => :app do 
    run "tail -f #{shared_path}/log/system.out" do |channel, stream, data| 
     puts # for an extra line break before the host name 
     puts "#{channel[:host]}: #{data}" 
     break if stream == :err 
    end 
    end 

end 

Répondre

3

Juste pour vous dire que je réussissais dans le jeu de lancement à distance en tordant un peu votre script et en ajoutant d'autres choses.
Votre problème est que vous devez lancer le processus à distance dans nohup + & mais le & ne fonctionne pas dans Capistrano pour une raison inconnue. J'ai trouvé un moyen de contourner.
J'étais tellement motivé que j'ai décidé d'en faire un module de jeu.
La toute première version est là: https://github.com/mandubian/play-capistrano

+0

Awesome! Enfin, je peux obtenir une ligne de déploiement :) –

+1

génial si cela fonctionne, je l'aime aussi :) – mandubian

+1

Et merci pour votre script, car sans elle, il aurait été plus long pour moi d'essayer d'écrire quelques lignes de rubis;) – mandubian