请考虑我的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
这将延迟对消息字符串的评估,直到收敛时间。
我是一名优秀的程序员,十分优秀!