Я хочу чисто искать различные пути каталога, используя команды оболочки в файле rakefile, присваивать это значение переменной, а затем использовать эту переменную для создания каталогов (и использования в других задачах). Я поставил код sh
в задание и сделал вызовы directory
в зависимости от задачи (используя вызов file
после directory
). Однако я не могу использовать переменную где-нибудь вне задачи (даже с ее глобальным).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?
После экспериментов дальше, я понимаю, что 'ш 'не возвращает результат std_out команды. –