2012-02-17 11 views
0

私は最初のRakefileを書いています。私が最初に読むのは"there is no special format for a Rakefile"で、 "Rakefileに特別な構文はありません"です。Rakefile(デプロイメント)を改善するには

オクラホマので、私は自分で何かを考え出す必要があったが、私は私の生き物を有する少なくとも2つの問題を見ることができます:

1)私はフォルダの数を作成する必要があり、そのうちの5 。 6 directoryタスクのシーケンスは少し奇妙に見えます。 deployタスクの5つの依存関係のリストはさらに奇妙に見えます。何とか1行に縮小できますか?

2)デプロイメントパスを定義するときとコンテンツをコピーするときに、ディレクトリ名リテラルを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/Railコミュニティではかなり主流です – ksol

+0

SCMから(リモート)サーバへの配備に使用されていますが、ローカルファイルシステムからローカルサーバ(コピーのみ)に配備できますか? –