【问题标题】:Capistrano can't find .jar fileCapistrano 找不到 .jar 文件
【发布时间】:2023-03-07 01:18:01
【问题描述】:

我正在编写一个代码,它将缩小和压缩我网站中的某些 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

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

编辑: 基本上我想要的是缩小和 gzip CSS/JS 文件,然后部署到生产中,我正在尝试使用 Capistrano 来完成这个(我已经使用 Capistrano 来更改文件的一些小部分,就像你在 finalize_update 任务中看到的那样) . 知道怎么做吗?

【问题讨论】:

  • 这些都不是 Capistrano 特定的代码,你能用正确的示例代码更新问题吗?
  • 这是我在 deploy.rb 文件中的代码,除了我描述的错误之外,我没有收到任何错误。
  • 但是您没有包含任务定义或其他任何内容,因此一开始很难看出这是 Capistrano 代码。我建议始终包含尽可能多的代码。无论如何,请参阅下面的答案。

标签: java ruby capistrano


【解决方案1】:

忽略您尚未发布任务定义,我认为您可能会遇到每个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

【讨论】:

  • 谢谢,我会试试的,这次我用任务定义编辑了我的帖子。
  • 还是同样的问题。失败:“sh -c 'cd && java -jar /home/yui_compressor/yuicompressor-2.4.8.jar --type js filter.js -o filter.min.js'”
  • run 在远程服务器上运行,如果您尝试在本地运行东西,请使用 run_locally,或者只是反引号。如果您远远超出 Capistrano 默认值,a) 我建议不要再使用 v2(v3 自约 1 周以来发布)和 b) 可能只查看 SSHKit 库,特别是 examples
  • 嗯,好的。但是有一个问题,我的 yui-compressor 应该位于哪里,在我的本地机器上还是在我试图推送到生产环境的 git 分支上?再次感谢男人
  • 我做了一些调整(一些路径),这就像一个魅力。谢谢大佬
猜你喜欢
  • 2019-03-02
  • 2013-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-10
  • 2018-06-29
相关资源
最近更新 更多