gpt4 book ai didi

ruby - Chef : how to get a timestamp at *convergence* rather than *compile* time

转载 作者:太空宇宙 更新时间:2023-11-03 18:08:05 25 4
gpt4 key购买 nike

请考虑我的deploy_to_tomcat 方法末尾的这段代码:

  unless Chef::Config[:solo]
chat_message "Deployed #{artifact_name} `#{Time.new.strftime("%Y-%m-%d %H:%M")}`"
end

它发布一条聊天消息:已部署 my-web-app 2016-11-03 12:31

但是,我注意到 Time.new 中的时间戳有点过时 - 它似乎是 Recipe 编译时的时间戳,而不是资源 时的时间戳几分钟后,em>找到了然后跑了。

所以我尝试了这个,但它没有用(消息发布到聊天时 timeNow 仍然是 undefined)

  timeNow = "undefined"
ruby_block "set-time-now" do
block do
timeNow = Time.new.strftime("%Y-%m-%d %H:%M:%S")
end
end

unless Chef::Config[:solo]
chat_message "Deployed #{artifact_name} `#{timeNow}`"
end

有没有更简单的方法让我的时间戳反射(reflect)实际时间(而不是 Recipe 开始的时间)?

最佳答案

你想要的是一个像这样的惰性求值器(我不知道你的 chat_message 资源是怎么写的):

unless Chef::Config[:solo]
chat_message "deployed" do
message lazy { "Deployed #{artifact_name} `#{Time.new.strftime("%Y-%m-%d %H:%M")}`" }
end
end

这将延迟对消息字符串的评估,直到收敛时间。

关于ruby - Chef : how to get a timestamp at *convergence* rather than *compile* time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40400590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com