2015-02-05 3 views
0

В моей ~/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 эдов?

+0

Где вы называете 'load'? –

+0

первое, что в этом файле –

ответ

-1

How do I make that variable available to the load ed script?

Вы не можете. Это локальная переменная. Локальные переменные являются локальными для области, в которой они определены, они не существуют в других областях. Вот почему они называются локальными переменными.

 Смежные вопросы

  • Нет связанных вопросов^_^