我正在编写一个代码,该代码将在我的网站中最小化和gzip压缩某些CSS和JS文件,然后将它们部署到在线服务器。在我的deploy.rb文件中,我有:

namespace :deploy do

task :start do

end

task :stop do

end

task :finalize_update do

    run "LANG=C find #{release_path} -type f -name '*.php' -exec sed -i 's/d1b03c1ee47aaa75040d7c45c4b77a2b/87c8273ed98d70c2e5c56cc487598a0e/g' {} \\;"

    end

task :minify do
#declare compressor
compressor = "java -jar /home/yui_compressor/yuicompressor-2.4.8.jar"
#name of the javascript files to be minify and compressed
js_list = ["filter","onBoarding"]
javascript_path = #{current_path}/js
run  "cd #{javascript_path}"
js_list.each do |js|
run "#{compressor} --type js #{js}.js -o #{js}.min.js"
run "gzip -c #{js}.min.js >#{js}.min.js.gz"
end

#name of the style files to be minify and compressed
css_list = ["styles"]
css_path = #{current_path}/css
run ("cd #{css_path}")
css_list.each do |css|
run "#{compressor} --type css #{css}.css -o #{css}.min.css"
run "gzip -c #{css}.min.css >#{js}.min.css.gz"
end

end

task :restart do

end
before "deploy:", "minify"

after "deploy:restart" do

    #run "find #{release_path} -type f -exec chmod 644 {} \\;"

    #run "find #{release_path} -type d -exec chmod 775 {} \\;"

end

end


如您所见,我正在使用YUI Compressor。问题是:

failed: "sh -c 'java -jar /home/yui_compressor/yuicompressor-2.4.8.jar --type js filter.js -o filter.min.js'" on my-server.com


我在这里做错了什么?
提前致谢

编辑:
基本上,我想要的是将CSS / JS文件压缩和压缩,然后部署到生产环境,我正在尝试通过Capistrano完成此操作(我已经使用Capistrano更改了文件的某些小部分,就像在finalize_update任务中看到的那样) 。
任何想法如何做到这一点?

最佳答案

忽略您尚未发布任务定义的情况,我认为您可能会遇到每个run()在其自己的“通道”中运行的问题,也就是说,采取的措施(导出的变量,更改的目录等)获胜了不会影响下一个,请尝试以下操作(例如):

css_list = ["styles"]
css_path = #{current_path}/css
# run ("cd #{css_path}") // Obsolete, it would only change the directory for this line!
css_list.each do |css|
  run "cd #{css_path} && #{compressor} --type css #{css}.css -o #{css}.min.css"
  run "cd #{css_path} && gzip -c #{css}.min.css >#{js}.min.css.gz"
end

10-07 16:18
查看更多