2

'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コンソールで「終了」と表示された後でも、ハングしているように見えます。

それで、考え?

4

1 に答える 1

2

私の友人がTwitterでこの質問に答えるのを手伝ってくれました。答えは、サーバーオブジェクトでreload()関数を呼び出して、それをチェックすることでした。Fogはサーバーオブジェクトをキャッシュし、状態を確認するために更新する必要があります。

これが私の最終的な解決策でした:

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

編集:コメントでより良い答えを持っているフレデリック・チャンに感謝します:

@server.wait_for {state == 'terminated'} 
于 2013-02-08T19:04:34.060 に答える