2012-02-17 6 views
0

Я пишу свой первый файл Rakefile. Первые вещи, которые я вижу в документе, - "there is no special format for a Rakefile" и «в Rakefile нет специального синтаксиса».Как я могу улучшить свой Rakefile (развертывание)

Хорошо, так что я должен был придумать что-то от себя, но я могу видеть, по крайней мере, две проблемы с моим существом:

1) Мне нужно создать несколько папок, пять из них , Последовательность задач 6 directory выглядит немного странно. Список из 5 зависимостей в задаче deploy выглядит еще более странным. Могу ли я уменьшить его до одной строки?

2) Мне нужно повторить литералы по имени каталога два раза - когда я определяю их пути развертывания и когда я копирую содержимое. Могу ли я избежать этого, не вводя еще 5 переменных?

В Java Ant Я бы создал файл свойств со всеми литералами имен - могу ли я сделать это с помощью Rake?

Это то, что я получил:

WEBAPPSDIR = '/var/webapps/' 
WEBAPPNAME = 'foo.local' 
WEBAPPDIR = File.join(WEBAPPSDIR, WEBAPPNAME) 
VIEWSDIR = File.join(WEBAPPDIR, 'views') 
PUBLICDIR = File.join(WEBAPPDIR, 'public') 
CSSDIR = File.join(PUBLICDIR, 'css') 
IMAGESDIR = File.join(PUBLICDIR, 'images') 
TMPDIR = File.join(WEBAPPDIR, 'tmp') 
HTMLDIR = File.join(PUBLICDIR, 'html') 

directory VIEWSDIR 
directory CSSDIR 
directory HTMLDIR 
directory IMAGESDIR 
directory TMPDIR 

desc 'Deploy to webapps dir' 
task :deploy => [VIEWSDIR, CSSDIR, IMAGESDIR, TMPDIR, HTMLDIR] do 
    cp 'config.ru', WEBAPPDIR 
    Dir.glob('*.rb') {|f| cp f, WEBAPPDIR} 
    Dir.glob('views/*.{mab,str}') {|f| cp f, VIEWSDIR} 
    Dir.glob('css/*.css') {|f| cp f, CSSDIR} 
    Dir.glob('images/*.{png,jpg,gif}') {|f| cp f, IMAGESDIR} 
    Dir.glob('html/*.html') {|f| cp f, VIEWSDIR} 
end 

desc 'Cleans webapp dir' 
task :clean do 
    rm_r WEBAPPDIR, {force: true} 
end 

Другие мысли/ссылки/примеры тоже приветствуются.

ответ

1

Это не отвечает на ваш вопрос - но почему вы не используете capistrano? Если вы этого еще не знаете, это рубиновый инструмент, который часто используется для плавного развертывания.

+0

посмотрит спасибо! это то, что вы используете сами? –

+0

Я использовал его лично, да, мы используем его в моей компании, и некоторые его «большие имена» (GitHub - это один на моей голове) тоже используют его. Это довольно обычное явление в сообществе ruby ​​/ rails – ksol

+0

В нем говорится, что он используется для развертывания с SCM на (удаленный) сервер, но может ли он развертывать из локальной файловой системы на локальный сервер (просто копировать)? –