ruby-on-rails – 服务器之间的资产指纹不同
发布时间:2020-12-17 02:05:38 所属栏目:百科 来源:网络整理
导读:我正在将rails 3.2.14应用程序部署到2个不同的服务器上,并在它们前面有一个负载均衡器.资产当前正在服务器上进行预编译(通过capistrano部署). 由于某种原因,application.js文件上的指纹在两个服务器之间是不同的.源文件是相同的.如果我删除了// = require_tr
我正在将rails 3.2.14应用程序部署到2个不同的服务器上,并在它们前面有一个负载均衡器.资产当前正在服务器上进行预编译(通过capistrano部署).
由于某种原因,application.js文件上的指纹在两个服务器之间是不同的.源文件是相同的.如果我删除了// = require_tree.从application.js然后他们都神奇地拥有相同的指纹. 我遇到过一些提到这个问题的帖子,但从未真正解决根本原因: > https://github.com/sstephenson/sprockets/issues/158#issuecomment-1837340 我试图避免在本地预先编译资产,以此作为解决此问题的方法(至少现在……). 解决方法
我无法轻松解决这个问题(即不想在我的application.js中完全拼出资产树),所以我最终覆盖了deploy:assets任务以在本地编译资产并推送到我的集群中的每个服务器.
namespace :deploy do namespace :assets do desc 'Run the precompile task locally and scp to server' task :precompile,:roles => :web,:except => { :no_release => true } do if releases.length <= 1 || capture("cd #{latest_release} && #{source.local.log(source.next_revision(current_revision))} vendor/assets/ app/assets/ | wc -l").to_i > 0 run_locally "bundle exec rake assets:precompile" run_locally "cd public; tar -zcvf assets.tar.gz assets" top.upload "public/assets.tar.gz","#{shared_path}",:via => :scp run "cd #{shared_path}; tar -zxvf assets.tar.gz" run_locally "rm public/assets.tar.gz" run_locally "bundle exec rake assets:clean" else logger.info 'Skipping asset pre-compilation because there were no asset changes' end end end end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |