Ruby shell 从 XCode plist 中读取的脚本

Ruby shell script read from XCode plist

我正在尝试使用 /usr/bin/ruby 脚本读取 plist 值。我该怎么做?

Bugsnag API script

fork do
  Process.setsid
  STDIN.reopen("/dev/null")
  STDOUT.reopen("/dev/null", "a")
  STDERR.reopen("/dev/null", "a")

  require 'shellwords'

  BUGSNAG_API_KEY=$(defaults read "$FRAMEWORK/APIKeys.plist" bugsnag) // Convert this to ruby

  Dir["#{ENV["DWARF_DSYM_FOLDER_PATH"]}/*/Contents/Resources/DWARF/*"].each do |dsym|
    system("curl --http1.1 -F apiKey={BUGSNAG_API_KEY} -F dsym=@#{Shellwords.escape(dsym)} -F projectRoot=#{Shellwords.escape(ENV["PROJECT_DIR"])} https://upload.bugsnag.com/")
  end
end
BUGSNAG_API_KEY=$(defaults read "$FRAMEWORK/APIKeys.plist" bugsnag)

假设这是 sh,它是 运行 一个命令并在字符串中捕获它的输出。在 Ruby 中,您使用反引号来做到这一点

BUGSNAG_API_KEY = `defaults read #{ENV['FRAMEWORK']}/APIKeys.plist bugsnag`

我唯一需要更改的是使用 ENV 访问环境变量而不是 sh 的 $ 语法。