2012-02-17 43 views
0

我在寫我的第一個Rakefile。我在文檔中看到的第一件事是"there is no special format for a Rakefile"和「Rakefile中沒有特殊的語法」。我該如何改進我的Rakefile(部署)

好了,我只好拿出我自己的東西,但我可以看到至少有兩個問題,我的生物:

1)我需要創建多個文件夾,其中五。 6 directory任務的順序看起來有點奇怪。 deploy任務中的5個依賴列表看起來更奇怪。我可以將它縮小到一行嗎?

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

將看看謝謝!這是你使用自己的東西嗎? – 2012-02-17 19:42:20

+0

我個人使用它,是的,我們在我的公司使用它,並且幾個「大名」(GitHub是我頭頂的那個)也在使用它。它在ruby/rails社區中非常主流 – ksol 2012-02-17 19:43:39

+0

它說它用於從SCM部署到(遠程)服務器,但它是否可以從本地文件系統部署到本地服務器(僅複製)? – 2012-02-17 19:52:18