ruby - 如何重构 Ruby 块并将重复调用提取到方法中?
问题描述
在cfndsl中,您可以像这样创建 AWS CloudFormation 模板:
CloudFormation do
EC2_Instance(:Example) do
ImageId 'ami-12345678'
InstanceType 't1.micro'
end
end
现实世界的模板通常要大得多,但这不是重点。
假设我有几十CloudFormation
个共享相同的块EC2_Instance
,每个块都有一个可能不同的ImageId
and InstanceType
。
如何将这种重复模式提取到方法中(例如ec2_instance
),以便我可以将CloudFormation
块重构为如下内容:
def ec2_instance(ami, type)
# ???
end
CloudFormation do
ec2_instance('ami-12345678', 't1.micro')
end
CloudFormation do
ec2_instance('ami-90111213', 't2.small')
end
解决方案
您可以重复使用相同的代码,但只需将 ImageId 和 InstanceType 替换为变量:
def ec2_instance(ami, type)
EC2_Instance(:Example) do
ImageId ami
InstanceType type
end
end
推荐阅读
- vba - 从具有相同目标的不同工作表中复制粘贴
- ruby-on-rails - Instagram 抓取以获取喜欢特定媒体的用户名
- node.js - 如何在 graphql-compose 中扩展模式
- mysql - MySQL - 获取 Mass-Insert 的 LAST_INSERT_ID()
- python - 将数据点分成簇并取每个簇的平均值
- javascript - 从字符串解析 Html 而不会丢失功能
- python-3.x - Tensorflow 错误原因:找不到图片
- node.js - 角度通用的代理
- c# - 如何在大型 git 存储库中查找项目的 sln 文件
- html - 尽管有填充,但仍插入了 HTML 表格单元格填充:0