使用Capistrano时,我应该在哪里部署我的部署任务?

时间:2014-12-28 20:45:51

标签: ruby-on-rails sinatra capistrano capistrano3

我正在使用Capistrano部署我在Sinatra和Rails中构建的应用程序。有一段时间我已经在部署到config/deploy.rb期间编写了我需要完成的所有工作。看起来我只是在这里写Rake。我想知道如果我能把这些放在正确的地方,或者如果我能做得更多,我是否能得到一些建议?#Cap; Capistranorish"我的部署。

以下是我在这里做的一些事情。我写了几乎所有我需要部署的内容。

# 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

1 个答案:

答案 0 :(得分: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结尾的文件,并且应该这样做!