RAKE元编程:如何从列表创建多个任务

编程入门 行业动态 更新时间:2024-10-10 17:26:39
本文介绍了RAKE元编程:如何从列表创建多个任务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

实际上我想要的是Capstrano脚本(它是基于rake的)。

如何转换多个任务,如下所示:

desc 'Runs rake db:seed' task :seed do on roles :db do within release_path do with rails_env: fetch(:rails_env) do execute :rake, "db:seed" end end end end

如下所示:

task_list = %i( db:seed db:reset db:migrate db:seed:testusers db:seed:testorders ) task_list.each do |task_name| desc %(Runs rake #{task_name}) task :task_name do on roles :db do within release_path do with rails_env: fetch(:rails_env) do execute :rake, task_name end end end end end

我的问题是task_name被用作任务定义中某个环境设置的键。

如何以这种方式定义多个任务?

推荐答案

如何:

task_list = %i( db:seed db:reset db:migrate db:seed:testusers db:seed:testorders ) task_list.each do |task_name| desc %(Runs rake #{task_name}) task {task_name => [:set_rails_env]} do on primary fetch(:migration_role) do within release_path do with rails_env: fetch(:rails_env) do execute :rake, task_name end end end end end

编辑:看到您将签名从task_name: [:dependency]更改为更简单的task_name,您必须执行以下操作:

task_list.each do |task_name| desc %(Runs rake #{task_name}) task task_name do ... end end 出现上述情况的原因是task_name: :foo是:task_name => :foo的句法糖。由于您希望动态计算密钥,因此将散列更改为task_name => :foo,其中task_name是保存符号的变量。

换句话说,您不希望将任务按字面意思命名为task_name,而是希望将其命名为变量task_name包含的名称。

更多推荐

RAKE元编程:如何从列表创建多个任务

本文发布于:2023-11-13 04:31:37,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1583435.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:多个   列表   RAKE

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!