0
在Rails部署中,有些时候我们错过了执行rake db:migrate,rake db:seed或任何在定期部署项目之后的rake作业。我试图添加这样的脚本与Rails结构,这将在部署后自动调用RakeJob和所有此类脚本。ROR +部署后自动运行Rake Job
就像在这种顺序方式: -
耙分贝:迁移
耙分贝:种子
耙(以下Rake是所有耙作业的组合)
在Rails部署中,有些时候我们错过了执行rake db:migrate,rake db:seed或任何在定期部署项目之后的rake作业。我试图添加这样的脚本与Rails结构,这将在部署后自动调用RakeJob和所有此类脚本。ROR +部署后自动运行Rake Job
就像在这种顺序方式: -
耙分贝:迁移
耙分贝:种子
耙(以下Rake是所有耙作业的组合)
我常部署到Heroku。我不知道你在哪里部署到但这里是我的部署脚本的副本
#vim lib/tasks/deploy.rake
namespace :deploy do
#rake deploy:production # Deploy to production
desc "Deploy to production"
task :production do
puts "THIS IS DEPLOYING TO PRODUCTION!!!"
puts "********* CAREFUL! *********"
sleep 10
backup_environment_db("heroku-prod")
deploy_sha_to_environment(ARGV[1], "heroku-prod")
system("open http://www.example.com/")
end
def deploy_sha_to_environment(sha, environment)
if sha = ARGV[1]
puts "About to push #{sha} to #{environment}."
message = `git log --format=%B -n 1 #{sha}`
puts "#{sha} -- #{message}"
sleep 2
Bundler.with_clean_env do
system "git push --force [email protected]:#{environment}.git #{sha}:master"
system "heroku run rake db:migrate --app #{environment}"
system "heroku restart --app #{environment}"
end
else
puts
puts "*** sha required! (pass it as an argument) ***"
puts
Rake.application.invoke_task("codeship:statuses")
exit
end
end
end
我希望这有助于
为什么不使用Capistrano的部署?这非常有帮助,您可以根据需要添加任何要在部署后执行的任务 –