2014-02-13 31 views
0

從capistrano 2部署中查找我的tasks.rb文件。它最初來自WP Stack,我已經入侵它,所以現在允許我執行「cap dev db:sync」以及「cap staging db:sync」,但是我已經將「end」語法放在了某個不正確的地方並在最後打破「db」部分,因爲我的部署現在報告「db:make_config」不存在。我不知道自己在做什麼,而且我一味地嘗試移動「結束」語法來無濟於事,有人有什麼想法可以幫我看看,指出可能需要移動的東西。Capistrano 2任務文件,語法需要修復

namespace :shared do 
task :make_shared_dir do 
    run "if [ ! -d #{shared_path}/files ]; then mkdir #{shared_path}/files; fi" 
end 
task :make_symlinks do 
    run "if [ ! -h #{release_path}/shared ]; then ln -s #{shared_path}/files/ #{release_path}/shared; fi" 
end 
end 

namespace :nginx do 
desc "Restarts nginx" 
task :restart do 
    run "sudo /etc/init.d/nginx reload" 
end 
end 

namespace :phpfpm do 
desc" Restarts PHP-FPM" 
task :restart do 
    run "sudo /etc/init.d/php-fpm restart" 
end 
end 

namespace :git do 
desc "Updates git submodule tags" 
task :submodule_tags do 
    run "if [ -d #{shared_path}/cached-copy/ ]; then cd #{shared_path}/cached-copy/ && git submodule foreach --recursive git fetch origin --tags; fi" 
end 
end 

namespace :memcached do 
desc "Restarts Memcached" 
task :restart do 
    run "echo 'flush_all' | nc localhost 11211", :roles => [:memcached] 
end 
desc "Updates the pool of memcached servers" 
task :update do 
    unless find_servers(:roles => :memcached).empty? then 
     mc_servers = '<?php return array("' + find_servers(:roles => :memcached).join(':11211", "') + ':11211"); ?>' 
     run "echo '#{mc_servers}' > #{current_path}/memcached.php", :roles => :memcached 
    end 
end 
end 

namespace :db do 
desc "Syncs the staging database from production" 
task :sync, :roles => :web do 
if stage == :production then 
    puts "[Error] You must run db:sync from staging with cap staging db:sync or from local with cap local db:sync" 
     else 
     if stage == :staging then 
     puts "Hang on... this might take a while." 
     random = rand(10 ** 5).to_s.rjust(5, '0') 
     p = wpdb[ :production ] 
     s = wpdb[ :staging ] 
     puts "db:sync" 
     puts stage 
     system "mysqldump -u #{p[:user]} --result-file=/tmp/wpstack-#{random}.sql -h #{p[:host]} -p#{p[:password]} #{p[:name]}" 
     system "mysql -u #{s[:user]} -h #{s[:host]} -p#{s[:password]} #{s[:name]} < /tmp/wpstack-#{random}.sql && rm /tmp/wpstack-#{random}.sql" 
     puts "Database synced to staging" 
     # memcached.restart 
     puts "Memcached flushed" 
end 
if stage == :dev then 
puts "Hang on... this might take a while." 
random = rand(10 ** 5).to_s.rjust(5, '0') 
p = wpdb[ :production ] 
d = wpdb[ :dev ] 
puts "db:sync" 
puts dev 
system "mysqldump -u #{p[:user]} --result-file=/tmp/wpstack-#{random}.sql -h #{p[:host]} -p#{p[:password]} #{p[:name]}" 
system "mysql -u #{d[:user]} -h #{d[:host]} -p#{d[:password]} #{d[:name]} < /tmp/wpstack-#{random}.sql && rm /tmp/wpstack-#{random}.sql" 
puts "Database synced to development repo" 
# memcached.restart 
puts "Memcached flushed" 
end 
desc "Sets the database credentials (and other settings) in wp-config.php" 
task :make_config do 
    set :staging_domain, '077397919.45' unless defined? staging_domain 
    {:'%%WP_STAGING_DOMAIN%%' => staging_domain, :'%%WP_STAGE%%' => stage, :'%%DB_NAME%%' => wpdb[stage][:name], :'%%DB_USER%%' => wpdb[stage][:user], :'%%DB_PASSWORD%%' => wpdb[stage][:password], :'%%DB_HOST%%' => wpdb[stage][:host]}.each do |k,v| 
     run "sed -i 's/#{k}/#{v}/' #{release_path}/wp-config.php", :roles => :web 
    end 
end 
end 
+0

使用,將對齊事情對你的編輯器。在vim中選擇所有內容('ggVG')並與'='對齊。你應該在底部看到兩個'end' – mdemolin

回答

0

試試這個:

namespace :shared do 
    task :make_shared_dir do 
    run "if [ ! -d #{shared_path}/files ]; then mkdir #{shared_path}/files; fi" 
    end 

    task :make_symlinks do 
    run "if [ ! -h #{release_path}/shared ]; then ln -s #{shared_path}/files/ #{release_path}/shared; fi" 
    end 
end 

namespace :nginx do 
    desc "Restarts nginx" 
    task :restart do 
    run "sudo /etc/init.d/nginx reload" 
    end 
end 

namespace :phpfpm do 
    desc" Restarts PHP-FPM" 
    task :restart do 
    run "sudo /etc/init.d/php-fpm restart" 
    end 
end 

namespace :git do 
    desc "Updates git submodule tags" 
    task :submodule_tags do 
    run "if [ -d #{shared_path}/cached-copy/ ]; then cd #{shared_path}/cached-copy/ && git submodule foreach --recursive git fetch origin --tags; fi" 
    end 
end 

namespace :memcached do 
    desc "Restarts Memcached" 
    task :restart do 
    run "echo 'flush_all' | nc localhost 11211", :roles => [:memcached] 
    end 

    desc "Updates the pool of memcached servers" 
    task :update do 
    unless find_servers(:roles => :memcached).empty? 
     mc_servers = '<?php return array("' + find_servers(:roles => :memcached).join(':11211", "') + ':11211"); ?>' 
     run "echo '#{mc_servers}' > #{current_path}/memcached.php", :roles => :memcached 
    end 
    end 
end 

namespace :db do 
    desc "Syncs the staging database from production" 
    task :sync, :roles => :web do 
    case stage 
    when :production 
     puts "[Error] You must run db:sync from staging with cap staging db:sync or from local with cap local db:sync" 
    when :staging 
     puts "Hang on... this might take a while." 
     random = rand(10 ** 5).to_s.rjust(5, '0') 
     p = wpdb[ :production ] 
     s = wpdb[ :staging ] 
     puts "db:sync" 
     puts stage 
     system "mysqldump -u #{p[:user]} --result-file=/tmp/wpstack-#{random}.sql -h #{p[:host]} -p#{p[:password]} #{p[:name]}" 
     system "mysql -u #{s[:user]} -h #{s[:host]} -p#{s[:password]} #{s[:name]} < /tmp/wpstack-#{random}.sql && rm /tmp/wpstack-#{random}.sql" 
     puts "Database synced to staging" 
     # memcached.restart 
     puts "Memcached flushed" 
    when :dev 
     puts "Hang on... this might take a while." 
     random = rand(10 ** 5).to_s.rjust(5, '0') 
     p = wpdb[ :production ] 
     d = wpdb[ :dev ] 
     puts "db:sync" 
     puts dev 
     system "mysqldump -u #{p[:user]} --result-file=/tmp/wpstack-#{random}.sql -h #{p[:host]} -p#{p[:password]} #{p[:name]}" 
     system "mysql -u #{d[:user]} -h #{d[:host]} -p#{d[:password]} #{d[:name]} < /tmp/wpstack-#{random}.sql && rm /tmp/wpstack-#{random}.sql" 
     puts "Database synced to development repo" 
     # memcached.restart 
     puts "Memcached flushed" 
    end 
    end 

    desc "Sets the database credentials (and other settings) in wp-config.php" 
    task :make_config do 
    set :staging_domain, '077397919.45' unless defined? staging_domain 
    {:'%%WP_STAGING_DOMAIN%%' => staging_domain, :'%%WP_STAGE%%' => stage, :'%%DB_NAME%%' => wpdb[stage][:name], :'%%DB_USER%%' => wpdb[stage][:user], :'%%DB_PASSWORD%%' => wpdb[stage][:password], :'%%DB_HOST%%' => wpdb[stage][:host]}.each do |k,v| 
     run "sed -i 's/#{k}/#{v}/' #{release_path}/wp-config.php", :roles => :web 
    end 
    end 
end 
+0

完美的mdemolin,非常感謝! – realdannys