title: How do I add multiline statement inside chef gaurd?
body: <p>In my recipe I have following resource that restart the computer but I want to apply guard on this resource.</p>
  
  <pre><code>powershell_script "Restart Computer" do
  code &lt;&lt;-EOH
  
      $computer_name=$env:COMPUTERNAME
      Restart-Computer -ComputerName $computer_name
      EOH
      guard_interpreter :powershell_script
      only_if reboot_pending?
  end
  </code></pre>
  
  <p>I googled and found following ruby script for checking machine required reboot or not</p>
  
  <pre><code>def reboot_pending?
  
    # don't break when used as a mixin in contexts without #node (e.g. specs).
    if self.respond_to?(:node, true) &amp;&amp; node.run_context.reboot_requested?
      true
    elsif platform?("windows")
      # PendingFileRenameOperations contains pairs (REG_MULTI_SZ) of filenames that cannot be updated
      # due to a file being in use (usually a temporary file and a system file)
      # \??\c:\temp\test.sys!\??\c:\winnt\system32\test.sys
      # http://technet.microsoft.com/en-us/library/cc960241.aspx
      registry_value_exists?('HKLM\SYSTEM\CurrentControlSet\Control\Session Manager', { :name =&gt; 'PendingFileRenameOperations' }) ||
  
      # RebootRequired key contains Update IDs with a value of 1 if they require a reboot.
      # The existence of RebootRequired alone is sufficient on my Windows 8.1 workstation in Windows Update
      registry_key_exists?('HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired') ||
  
      # Vista + Server 2008 and newer may have reboots pending from CBS
      registry_key_exists?('HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootRequired') ||
  
      # The mere existence of the UpdateExeVolatile key should indicate a pending restart for certain updates
      # http://support.microsoft.com/kb/832475
      (registry_key_exists?('HKLM\SOFTWARE\Microsoft\Updates\UpdateExeVolatile') &amp;&amp;
            !registry_get_values('HKLM\SOFTWARE\Microsoft\Updates\UpdateExeVolatile').select { |v| v[:name] == "Flags" }[0].nil? &amp;&amp;
            [1,2,3].include?(registry_get_values('HKLM\SOFTWARE\Microsoft\Updates\UpdateExeVolatile').select { |v| v[:name] == "Flags" }[0][:data]))
    elsif platform?("ubuntu")
      # This should work for Debian as well if update-notifier-common happens to be installed. We need an API for that.
      File.exists?('/var/run/reboot-required')
    else
      false
    end
  end
  </code></pre>
  
  <p>I tried to add this method inside guard but its not working.Is there any way to write multiline statement inside chef guard?</p>