Ruby on rails 从Capistrano运行rake任务(如果存在)
我需要创建一个Capistrano预部署步骤来运行定制的rake任务 在部署.rb中:Ruby on rails 从Capistrano运行rake任务(如果存在),ruby-on-rails,ruby,rake,capistrano,capistrano3,Ruby On Rails,Ruby,Rake,Capistrano,Capistrano3,我需要创建一个Capistrano预部署步骤来运行定制的rake任务 在部署.rb中: 在“部署:启动”、“数据库:回滚”之前 名称空间:db do 描述“仅当已部署的PR需要回滚时才回滚暂存数据库” 任务:回滚 关于角色(:master)do 在当前路径中。要做什么 使用rails_env:“staging”do 执行:rake,“释放:回滚” 结束 结束 结束 结束 结束 问题是,在部署此代码时,服务器上还没有rake任务,因此部署失败,原因是: rake stdout: rake abo
在“部署:启动”、“数据库:回滚”之前
名称空间:db do
描述“仅当已部署的PR需要回滚时才回滚暂存数据库”
任务:回滚
关于角色(:master)do
在当前路径中。要做什么
使用rails_env:“staging”do
执行:rake,“释放:回滚”
结束
结束
结束
结束
结束
问题是,在部署此代码时,服务器上还没有rake任务,因此部署失败,原因是:
rake stdout: rake aborted!
Don't know how to build task 'release:rollback_staging' (See the list of available tasks with `rake --tasks`)
是否有办法检查Capistrano是否存在rake任务?
smth类似:
使用rails\u env:'staging'do
如果rake\u存在,执行:rake,'release:rollback\u staging'发布:回滚\u暂存'
结束
最后,我使用raise\u on\u non\u zero\u exit:false忽略了rake任务中的非0退出代码:
使用rails\u env:'staging'do
执行:rake,'release:rollback\u staging',在\u非\u零上提升\u\u退出:false
结束
最后,我使用raise\u on\u non\u zero\u exit:false忽略了rake任务中的非0退出代码:
使用rails\u env:'staging'do
执行:rake,'release:rollback\u staging',在\u非\u零上提升\u\u退出:false
结束
这样行吗?我在这张照片上看到了这个图案
这样行吗?我在这张照片上看到了这个图案
欢迎来到SO!请阅读这篇文章,如果这是另一个问题,请把它贴出来。如果是答案,请编辑。欢迎使用SO!请阅读这篇文章,如果这是另一个问题,请把它贴出来。如果是答案,请编辑它。
if Rake::Task.task_defined?('release:rollback_staging')