В моей ~/Sites/
каталог У меня есть всемогущий Rakefile:Rakefiles: переменная сфера доступна в `load`ed сценариев
desc "Run deliver in each directory"
task :deliver do
sh 'for a in $(ls ./*/Rakefile); do (cd $(dirname $a); rake -f Rakefile deliver); done'
end
(наряду с другими производственными задачами весело, а глупый«по умолчанию»задача, в котором перечислены все задачи [см. https://github.com/ruby/rake/issues/22])
Некоторые каталоги внутри Sites
имеют в них Rakefile. Большинство выглядеть следующим образом:
# Rsync options
production_server = 'pacificmedicaltraining.net'
production_user = 'training2'
production_www_dir = 'www'
local_www_dir = 'www'
local_git_dir = 'git'
desc "Run all build and deployment tasks, for continuous delivery"
task :deliver => [:pullgit, :buildjekyll, :pushproduction]
desc "Bring deployed server files local"
task :pullgit do
puts 'Pulling git'
sh "cd '#{local_git_dir}'; git pull"
puts 'Pulled'
end
...
Поведение этого Rakefile полностью определяется параметрами в верхней и deliver
задачи (другие сайты могут не использовать Джекил для строительства). Все остальные задачи в этом файле - копирование. В интересах DRY я удалил вложенные в копии задачи в ~/Sites/common.rake
и включил этот файл с load '../common.rake'
в файлы, внесенные в файл.
Pulling git rake aborted! NameError: undefined local variable or method 'local_git_dir' for main:Object /Users/williamentriken/Sites/common.rake:4:in 'block in ' Tasks: TOP => pullgit (See full trace by running task with --trace)
Как мне сделать этот переменную, доступную для сценария load
эдов?
Где вы называете 'load'? –
первое, что в этом файле –