我写了一个从数据库安装Windows桌面应用程序的配方:
workstation_apps = data_bag_item('winapps','desktop_apps')
for package in workstation_apps['apps'] do
chocolatey_package "#{package}" do
action :install
end
end
运行foodcritic我收到错误:
FC002: Avoid string interpolation where not required: ./recipes/default.rb:23
正如您所看到的,我在#{package}周围添加了双引号,以便它扩展变量并且不用作注释。
有更好的方法吗?
答案 0 :(得分:3)
您可以将"#{package}"
替换为package.to_s
。
如果package
是字符串对象,则只需package
:
workstation_apps = data_bag_item('winapps','desktop_apps')
for package in workstation_apps['apps'] do
chocolatey_package package do
action :install
end
end
缩进action ...
行以明确该行属于某个块。
答案 1 :(得分:2)
两件事:首先不鼓励在Ruby中使用for
循环,而是支持each
循环。其次,巧克力包提供程序支持多包操作,因此您可以重写这样的配方:
workstation_apps = data_bag_item('winapps','desktop_apps')
chocolatey_package workstation_apps['apps']
(请记住:install
是默认操作,因此您无需将其写出来)