- Jamis
On Oct 28, 2008, at 9:13 PM, Bharat wrote:
I just finished migrating my deploy script from Capistrano 1.4.1 and Deprec 1.9.2 combo to Capistrano 2.5.0 with a lot of help from Lee (thank you sir). It is working great. However, there is one thing that I do not understand. It always gives this line of error message when I run it initially with seemingly no ill effect. Every subsequent run is clean until I have to type in the password again. Here is a snippet of Capistrano session: [EMAIL PROTECTED]:~/work/vjc-comp$ RAILS_ENV=staging cap deploy * executing `deploy' * executing `deploy:update' ** transaction: start * executing `deploy:update_code' triggering before callbacks for `deploy:update_code' * executing `deploy:do_sudo' * executing "sudo -p 'sudo password: ' date" servers: ["staging.virtualjobcoach.com"] [staging.virtualjobcoach.com] executing command Password: *** [err :: staging.virtualjobcoach.com] <--- this line is where the error shows up ** [out :: staging.virtualjobcoach.com] Wed Oct 29 02:21:58 UTC 2008 command finished * executing "svn checkout -q -r1923https://secure.svnrepository.com/xxxt/yyy/branches/20081027- companies /var/www/apps/isabont/releases/20081029022203 && (echo .............................................. Here is the deploy.rb script with domain names and svn server names hidden: # Determine rails environment, get it from RAILS_ENV variable set :rails_env, ENV["RAILS_ENV"] || "development" case rails_env when "production" set :domain, "aaa" when "staging" set :domain, "bbb" when "test" set :domain, "10.211.550.100" when "acsol_production" set :domain, "ccc" when "acsol_staging" set :domain, "ddd" else raise "No deployment defined for environment #{rails_env}" end # Define roles, these are common across all servers role :web, domain role :app, domain role :db, domain, :primary => true # --- These variables are needed for setting up Capistrano run-time so that # --- each release instance can be deployed. # ------------------ REQUIRED VARIABLES ------------------------------------- set :application, "isabont" set :deploy_to, "/var/www/apps/#{application}" set :user, "deploy" #set :repository, "https://secure.svnrepository.com/xxx/yyy/trunk" set :repository, "https://secure.svnrepository.com/xxx/yyy/branches/ 20081027-companies" # ------------------- SYMLINK VARIABLES -------------------------------------- # Symlink these dirs to shared set :app_symlink_dirs, %w(tmp/openoffice tmp/pids public/flash public/ pages) # Directory for user uploaded files - Users are allowed to store their docs on # our servers under /var/www/apps/isabont/shared/files directory set :app_upload_dir, "files" # ----------- MONGREL VARIABLES WORK WITH APACHE PROXY ---------------------- set :mongrel_servers, 4 set :mongrel_address, "127.0.0.1" set :mongrel_environment, rails_env set :mongrel_conf, "/etc/mongrel_cluster/#{application}.yml" # ------------------ OPEN OFFICE SET-UP VARIABLE ---------------------------- # -- These are only needed for Open Office Configuration -------------------- set :ooo_resource_dir, "resources/open_office" set :ooo_script_dir, lambda {"/home/#{user}/.openoffice.org2/user/ basic/Standard"} set :ooo_bin, "/usr/lib/openoffice/program/soffice" # ubuntu path # ------------------ CALLBACKS ---------------------------------------------- before "deploy:update_code", "deploy:do_sudo" after "deploy:update_code", "deploy:link_public_dirs" after "deploy:update_code", "deploy:package_assets" namespace :deploy do desc "Execute something with sudo so that it doesn't get stuck waiting for a password later" task :do_sudo do sudo "date" end desc "Link up any public directories." task :link_public_dirs, :roles => :app do run "test -d #{release_path}/tmp || mkdir -p #{release_path}/tmp" if app_symlink_dirs || app_upload_dir (app_upload_dir.to_a + (app_symlink_dirs || [])) .each do | link| target_in_shared = "#{shared_path}/#{link.split("/").last}" run "rm -f #{release_path}/#{link}" run "ln -nfs #{target_in_shared} #{release_path}/#{link}" end end end desc "Minify and merge assets" task :package_assets, :roles => :web do run <<-EOF cd #{release_path} && rake RAILS_ENV=#{rails_env} asset:packager:build_all EOF end end #------------------------ CORE TASKS ----------------------------------------- #-- These tasks override the Capistrano built-in restart task that is called - #-- by the deploy task, hence the need to redefine them ---------------------- namespace :deploy do namespace :apache do [ :start, :stop, :restart ].each do |t| desc "#{t.to_s.capitalize} the Apache webserver" task t, :roles => :web do sudo "/usr/local/apache2/bin/apachectl #{t.to_s} > /dev/null" end end end namespace :mongrel do [ :start, :stop, :restart ].each do |t| desc "#{t.to_s.capitalize} the mongrel appserver" task t, :roles => :app do sudo "mongrel_rails cluster::#{t.to_s} --clean -C #{mongrel_conf}" end end end namespace :backgroundrb do desc "Start backgroundrb service" task :start, :roles => :app do run "RAILS_ENV=#{rails_env} nohup #{current_path}/script/ backgroundrb start 2>&1 1>/dev/null" end desc "Stop backgroundrb service" task :stop, :roles => :app do # echo at end makes the return code always 0 run "test -f #{current_path}/log/backgroundrb.pid && #{current_path}/script/backgroundrb stop; echo" end desc "Restart backgroundrb service" task :restart, :roles => :app do stop start end end desc "Custom start task for all Daemons" task :start, :roles => [:app, :web] do deploy.apache.start deploy.mongrel.start deploy.backgroundrb.start end desc "Custom stop task for all Daemons" task :stop, :roles => [:app, :web] do deploy.apache.stop deploy.mongrel.stop deploy.backgroundrb.stop end desc "Custom restart task for all Daemons" task :restart, :roles => [:app, :web] do stop start end end #-------------------- OPEN OFFICE MODULE CODE -------------------------------- module OpenOfficeOrg def config append_to_file_if_missing('/etc/inittab', 'xvfb:23:respawn:/usr/ bin/Xvfb :10') sudo "kill -HUP 1" # restart init so xvfb gets spawned # Run openoffice with a macro that will fail so that user directories get created run "#{ooo_bin} -display :10 -headless -macro \"error\"" %w(script.xlb Isabont.xba).each{|it| put File.read("#{ooo_resource_dir}/#{it}"), "#{ooo_script_dir}/#{it}"} end def append_to_file_if_missing(filename, value) # XXX sort out single quotes in 'value' - they'l break command! # XXX if options[:requires_sudo] and :use_sudo then use sudo sudo <<-END sh -c ' grep -F "#{value}" #{filename} > /dev/null 2>&1 || test ! -f #{filename} || echo "#{value}" >> #{filename} ' END end end Capistrano.plugin :ooo, OpenOfficeOrg I do not claim any originality for this script, only creative merging from various sources. Feel free to use it in your own work. But kindly critique it so that I can improve it and learn. Also, please point out why I get this error message, I do not understand it. Thanks. Bharat --~--~---------~--~----~------------~-------~--~----~ To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/capistrano -~----------~----~----~----~------~----~------~--~---
smime.p7s
Description: S/MIME cryptographic signature
