我想在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结果。 –