ruby on rails-如何使用Fog验证AWS服务器终止



我在"begin"块中有一个Rails应用程序的3行代码,用于使用Fog终止AWS计算实例,并在成功时设置字符串值:

  @server = @connection.servers.get(params[:id])
  @server.destroy
  @server_deletion_result = "success"

此代码有效,但它只是向AWS发送一个终止实例的命令。使用Fog,我如何验证实例是否已完成终止

我试过了,但没有用:

  while @server.state != "terminated" do
    sleep 3
  end
  @server_deletion_result = "success"

即使在实例在AWS控制台中显示"已终止"很久之后,它也似乎挂起了。

那么,想法呢?

我的一个朋友通过Twitter帮我回答了这个问题。答案是在服务器对象上调用reload()函数,然后检查它。Fog缓存服务器对象,必须更新它才能检查状态。

这是我的最终解决方案:

  @server.reload
  while @server.state != "terminated" do
    sleep 3
    @server.reload
  end

编辑:感谢张,他在评论中有一个更好的答案:

@server.wait_for {state == 'terminated'} 

相关内容

  • 没有找到相关文章

最新更新