2011-07-27 3 views
0

저는 현재 카피 스트라 노에 대한 여러 단계의 레서피를 만들고 있습니다. 배포 후 모든 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 메쏘드를 사용해야합니다. 말했다

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 

, 나는 레이크에 쉘 스크립트 (테스트되지 않은)

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 

또는 당신이 그것을 프로그램 루비를 사용하는 것을 선호하는 경우, 당신은 이동해야 코드 같은과 그 코드를 변경합니다 작업 (로컬에서 시도하고 디버깅 할 수 있음)을 실행 한 다음 Capistrano로 호출하십시오. How do I run a rake task from Capistrano?