2011-07-27 12 views
0

現在、私はCapistranoのマルチステージレシピを作成しています。これは理想的にはデプロイ後、すべてのcssとjsに対してyuiコンプレッサーを賢明に使用します。Capsitrano展開レシピ:デプロイ後のファイルのリストと変更

は、ここで私は、現在のところに来ものです:本当に私を不可解何

after "deploy", "deploy:cleanup", "minifier:compress" 
# Task to minify via Yui-compressor 
# Uses compressor bundled with application in #{application}/lib/yuicompressor 
namespace :minifier do 

def minify(files) 
files.each do |file| 
    cmd = "java -jar lib/yuicompressor/build/yuicompressor-2.4.6.jar #{file} -o #{file}" 
    puts cmd 
    ret = system(cmd) 
    raise "Minification failed for #{file}" if !ret 
end 
end 

desc "minify" 
task :compress do 
minify_js 
minify_css 
end 

desc "minify javascript" 
task :minify_js do 
minify(Filelist['public/js/**/*.js']) 
end 

desc "minify css" 
task :minify_css do 
    minify(Filelist['public/css/**/*.css']) 
end 
end 

私はできるだけ早くカピストラーノがポイントになるにつれて取得

uninitialized constant Capistrano::Configuration::Filelist (NameError) 

です。 Ruby、Rails、Capistranoの初心者である私は、FileListは一般的なCapistranoメソッドではないことを理解していますが、何を置き換えるべきかを理解することはできません。

ありがとうございました。

+0

あなたはどういう意味ですか:: Rake :: Filelist? – jimworm

答えて

1

あなたのタスクは概念的には間違っています。あなたはsystemと呼ばれているので、ローカルシステム(展開元のシステム)で実行されます。runメソッドを使用してリモートでコマンドを実行する必要があります。

私は、シェルスクリプトで(未テスト)

task :minify 
    cmd = "java -jar lib/yuicompressor/build/yuicompressor-2.4.6.jar" 
    run "find #{current_path}/public/css/ -name '*.css' -print0 | xargs -0 -I file #{cmd} file -o file" 
    run "find #{current_path}/public/js/ -name '*.js' -print0 | xargs -0 -I file #{cmd} file -o file" 
end 

またはあなたがそれをプログラムするルビーを使用することを好む場合、あなたは熊手にコードを移動する必要のようなものをそのコードを変更します、と述べ

def minify(files) 
files.each do |file| 
    cmd = "java -jar lib/yuicompressor/build/yuicompressor-2.4.6.jar #{file} -o #{file}" 
    puts cmd 
    ret = system(cmd) # *** SYSTEM RUN LOCAL COMMANDS *** 
    raise "Minification failed for #{file}" if !ret 
end 
end 

タスク(これはローカルで試してデバッグすることができます)を開き、Capistranoで呼び出します。How do I run a rake task from Capistrano?

関連する問題