問題

私はMixlibチームに報告したこの MIXLIB-11 エラーに遭遇しているので、Mixlib :: Shelloutの代わりにウォークアラウンドを見つける必要があります。

問題について簡単に説明します。

ここでは "* No expect - 読み込みはコンパイル時に行われますが、remote_fileリソースは実行時に実行されます。**"

この機能のため、この現在のレシピに含まれる以前のレシピによって実行時にディレクトリが作成されても、Mixlib::Shellout.new("ls", :cwd => '/opt/cubrid/share/webmanager')は "No such file or directory"エラーを発生させます。

実行時にファイル/ディレクトリを読み込む方法はありますか?

  ベストアンサー

答えを見つけました:ruby_blockでコードをラップし、実行時に実行されます。

 ruby_block "Check if CURBID Web Manager needs installation" do
  block do
    version = ""

    if File.exists?("#{CWM_HOME_DIR}/appLoader.js")
      # Read the CWM version from file.
      f = File.open("#{CWM_HOME_DIR}/appLoader.js")

      pattern = /Ext\.cwm\.prodVersion = '(\d+\.\d+\.\d+\.\d+)'/

      f.each {|line|
        if match = pattern.match(line)
          version = match[1]
          break
        end
      }

      f.close
    end
  end
end
 

これで、前のレシピで作成されたファイルからバージョンが正しく取り込まれます。

  同じタグがついた質問を見る

rubyiochef