首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Capsitrano部署方法:在部署文件列表和修改之后

Capsitrano部署方法:在部署文件列表和修改之后
EN

Stack Overflow用户
提问于 2011-07-27 21:09:08
回答 1查看 1K关注 0票数 0

我目前正在研究Capistrano的多阶段配方,理想情况下,在部署后,将明智地将yui压缩器用于所有css和js。

这是我目前的想法:

代码语言:javascript
复制
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

真正让我困惑的是

代码语言:javascript
复制
uninitialized constant Capistrano::Configuration::Filelist (NameError)

卡普斯特拉诺一说到点子上我就开始了。作为Ruby、Rails和Capistrano的新手,出于某种原因,我知道FileList不是一种常见的Capistrano方法,但我不知道用什么来代替它。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-27 21:59:47

您的任务在概念上是错误的,它将在本地系统(您正在部署的系统)上运行,因为您正在调用system,所以您应该使用远程运行命令的run方法。

代码语言:javascript
复制
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

也就是说,我将使用shell脚本来更改代码,例如(未测试)

代码语言:javascript
复制
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

或者,如果您更喜欢使用ruby对其进行编程,则应该将代码移到rake任务中(您可以尝试在本地进行调试),然后使用Capistrano:How do I run a rake task from Capistrano?调用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6844832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档