Techioz Blog

ポストリクエストがスティミュラス経由で成功した後に別のコントローラーにリダイレクトする方法

概要

以下のように、Ruby の find コマンドを使用して、Puppet データベースから必要な情報を収集しています。

vm_name = puppetdb.find { |details| details['certname']==(hostname) and details['name'] == 'az_metadata' }['value']['compute']['name']

以下のように、Ruby の find コマンドを使用して、Puppet データベースから必要な情報を収集しています。

特定の変数の検索結果からそれらのメソッド値または未定義のメソッド値を処理するにはどうすればよいですか?

解決策

エラーから、結果のキーの値が nil であるようです。

dig メソッドまたは Safe Navigation Operator を使用できます。

# dig
data = puppetdb.find {|details| details['certname']==(hostname) and details['name']=='az_metadata'}
vm_name = data.dig('value','compute','name')

# Safe Navigation
data = puppetdb.find {|details| details['certname']==(hostname) and details['name']=='az_metadata'}
vm_name = data&.['value']&.['compute']&.['name']