2014-12-28 83 views
1

我正在使用Capistrano來部署我在Sinatra和Rails中構建的應用程序。一段時間以來,我一直在將部署過程中需要完成的所有工作都寫入config/deploy.rb。看起來我只是在這裏寫Rake。我想知道如果我能將這些放在正確的位置,或者我的部署能夠變得更加「Capistranorish」,我能否得到一些建議。使用Capistrano時,我應該在哪裏放置部署任務?

這裏有一些我在這裏做的事情的例子。我寫了幾乎所有我需要我的部署在此處執行的操作。

# deploy.rb 
task :initctl_reload_configuration do 
    on roles(:app), in: :sequence do 
    execute "sudo initctl reload-configuration" 
    end 
end 

task :rebuild_sitemap_no_ping do 
    on roles(:app), in: :sequence do 
    execute "cd /srv/app/#{environment}/current && RAILS_ENV=#{environment} bundle exec rake sitemap:refresh:no_ping" 
    end 
end 

task :rebuild_sitemap do 
    on roles(:app), in: :sequence do 
    execute "cd /srv/app/#{environment}/current && RAILS_ENV=#{environment} bundle exec rake sitemap:refresh" 
    end 
end 

task :restart_services do 
    on roles(:app), in: :sequence do 
    execute "sudo service tomcat6 restart" 
    execute "sudo service sunspot-solr restart" 
    execute "sudo service app-#{environment} restart" 
    execute "sudo service nginx restart" 
    end 
end 

回答

3

如果這就是你得到的,它可能會很好,讓它在deploy.rb

如果你真的想移動到某處這些任務,下面的Capfile內容(你可能有它在你的項目的根目錄)應該給你一個提示:

# Load custom tasks from `lib/capistrano/tasks' if you have any defined 
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r } 

所以才創建lib/capistrano/tasks/文件以.rake結尾,這應該做到這一點!

+0

真棒的意見!謝謝!我肯定會得到更多的東西,我需要更好地組織。因此,進入該目錄並分解成單獨的Rake任務將有所幫助。 –

相關問題