Ruby on rails “放置在何处”;“之前”;及;“之后”;在卡皮斯特拉诺食谱中?
愚蠢的问题,但我们有一个坏的Capistrano配方,我想验证一下,我们没有错误地使用Ruby on rails “放置在何处”;“之前”;及;“之后”;在卡皮斯特拉诺食谱中?,ruby-on-rails,ruby-on-rails-3,capistrano,Ruby On Rails,Ruby On Rails 3,Capistrano,愚蠢的问题,但我们有一个坏的Capistrano配方,我想验证一下,我们没有错误地使用之后和之前的 这些前后任务属于:deploy命名空间块还是在其外部?我看到了这两个例子 这是有问题的deploy.rb的摘录: namespace :deploy do task :start do ; end task :stop do ; end task :restart, :roles => :app, :except => { :no_release => true }
之后和之前的
这些前后任务属于:deploy
命名空间块还是在其外部?我看到了这两个例子
这是有问题的deploy.rb的摘录:
namespace :deploy do
task :start do ; end
task :stop do ; end
task :restart, :roles => :app, :except => { :no_release => true } do
run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
end
# copy database.yml into project
task :copy_database_config do
production_db_config = "/Library/RoRconfig/#{application}.yml"
run "cp #{production_db_config} #{current_release}/config/database.yml"
`puts "replaced database.yml with live copy"`
end
task :pipeline_precompile do
run "cd #{release_path}; RAILS_ENV=production rake assets:precompile"
end
after "deploy:update_code", "deploy:pipeline_precompile" ### <---
before "deploy:finalize_update", "deploy:copy_database_config" ### <---
end
namespace:deploydo
任务:开始做;结束
任务:停止做;结束
任务:重新启动,:角色=>:app,:except=>{:no\u release=>true}do
运行“#{try#sudo}touch#{File.join(当前路径,'tmp','restart.txt')”
结束
#将database.yml复制到项目中
任务:复制\u数据库\u配置do
production_db_config=“/Library/RoRconfig/#{application}.yml”
运行“cp{production\u db\u config}{current\u release}/config/database.yml”
`将“用实时副本替换了database.yml”`
结束
任务:管道\u预编译do
运行“cd#{release_path};RAILS_ENV=production-rake-assets:precompile”
结束
在“deploy:update_code”、“deploy:pipeline_precompile”####之后,我使用类似于以下内容的设置:
after :deploy, "deploy:update_code", "deploy:pipeline_precompile"
before :deploy, "deploy:finalize_update", "deploy:copy_database_config"
namespace :deploy do
task :start do ; end
task :stop do ; end
task :restart, :roles => :app, :except => { :no_release => true } do
run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
end
# copy database.yml into project
task :copy_database_config do
production_db_config = "/Library/RoRconfig/#{application}.yml"
run "cp #{production_db_config} #{current_release}/config/database.yml"
`puts "replaced database.yml with live copy"`
end
task :pipeline_precompile do
run "cd #{release_path}; RAILS_ENV=production rake assets:precompile"
end
end
根据capistrano的doc at,以下是他们对内部和外部的建议:部署命名空间:
# call an existing task
before :starting, :ensure_user
after :finishing, :notify
# or define in block
namespace :deploy do
before :starting, :ensure_user do
#
end
after :finishing, :notify do
#
end
end
但是,请注意不要将这些挂钩放在您导入的自定义capistrano rake文件中,因为加载顺序可能会使其不存在