2009-05-15 5 views
1

J'utilise craken pour exécuter des processus cron sur mon instance aws machine. J'ai défini les tâches personnalisées suivantes Capistrano:Configurer une tâche Capistrano pour qu'elle s'exécute uniquement sur déploiement, pas sur déploiement: froid

namespace :craken do 
    desc "Install raketab" 
    task :install, :roles => :cron do 
    set :rails_env, "production" unless exists?(:rails_env) 
    set :env_args, (exists?(:env_args) ? env_args : "app_name=#{application} deploy_path=#{current_path}") 
    run "cd #{current_path} && rake #{env_args} RAILS_ENV=#{rails_env} craken:install" 
    end 
    task :uninstall, :roles => :cron do 
    set :rails_env, "production" unless exists?(:rails_env) 
    set :env_args, (exists?(:env_args) ? env_args : "app_name=#{application} deploy_path=#{current_path}") 
    run "cd #{current_path} && rake #{env_args} RAILS_ENV=#{rails_env} craken:uninstall" 
    end 
end 

before "deploy:symlink", "craken:uninstall" 
after "deploy:symlink", "craken:install" 

Le problème est que l'avant « déployer: symlink », « Craken: désinstaller » les causes déployer froid à l'échec lors de la première course, puisque le raketab Craken n'a pas encore été installé. Comment puis-je configurer ceci pour s'exécuter seulement s'il s'agit d'un déploiement et non d'un déploiement: froid? Y a-t-il une variable d'environnement que je peux vérifier?

Merci!

Répondre

0

hack, changement Cracken: désinstaller à

run "cd # {current_path} & & rake # {env_args} RAILS_ENV = # {RAILS_ENV} Craken: désinstaller, true"

ou crochet tâches Cracken lors du déploiement: mise à jour