我想在rakefile中使用shell命令乾淨地查找各種目錄路徑,將該值賦給變量,然後使用該變量創建目錄(並在其他任務中使用)。我已將sh
代碼放入任務中,並使directory
調用取決於任務(使用directory
後的file
調用)。但是,我無法在任務以外的任何地方使用該變量(即使使其成爲全局變量)。Rakefile - 任務上的參數和目錄依賴關係
$my_root = String.new
task :find_path do
sh %{git rev-parse --show-toplevel} do |pass, res|
if ! pass
puts "git rev-parse failed, are you in a git repo? (status = #{res.exitstatus})"
else
$my_root = res
end
end
end
$MY_DIR = "#{$my_root}/some/sub/dir"
desc "Create MY_DIR directory"
directory $MY_DIR
file $MY_DIR => :find_pmc_path
我得到以下錯誤:
mkdir -p /some/sub/dir
rake aborted!
當我進一步深入研究,在$ MY_DIR沒有得到正確分配。如果我將該變量賦值放在任務中,則會出現undefined method 'length' for nil:NilClass
錯誤。
如何查找信息,分配變量,並將其用於rakefile中的多個其他任務?
進一步試驗之後,我意識到,'SH '不返回命令的std_out結果。 –