【发布时间】:2012-04-18 14:59:34
【问题描述】:
我在生产 上遇到了一些资产问题:缺少资产、编译到错误文件中的东西(“/admin”的 JavaScript 被编译到前端代码等等)。大多数资产来自引擎。我想对此进行调试和优化。
为此,我需要在我的开发环境上进行预编译、服务和失败,就像在生产环境上一样。
我在config/development.rb 中添加了一些行:
config.serve_static_assets = true
config.assets.precompile += %w( store/all.js store/all.css admin/all.js admin/all.css ) # @TODO: clean up, and optimize.
config.assets.compile = false
使用rake RAILS_GROUPS=assets RAILS_ENV=development assets:precompile 运行它会给我所有资产和public/ 中的manifest.yml。
但是随后服务器出现故障:
Sprockets::Helpers::RailsHelper::AssetPaths::AssetNotPrecompiledError in Spree/home#index
Showing /xxxx/app/views/spree/shared/_head.html.erb where line #13 raised:
favicon.ico isn't precompiled
favicon.ico 未预编译。但它是!它在公共目录中的manifest.yml 中,我可以使用浏览器(或 wget)获取它:http://localhost:3000/assets/favicon.ico。
注意 Favicon 只是调用的第一个资产。如果我去掉 favicon,问题就会出现在下一个资产上,即“all.js”,或者,当它被剥离时,“all.css”等等。我可以剥离它直到“footer_bg.png”,然后它会在那里失败。再说一遍:问题不在于网站图标,而在于 开发 环境根本看不到预编译的资产。
还需要什么才能获得类似于 production 的 development 资产管道?
编辑:更明确的解释是网站图标不是问题,只是一种症状。
【问题讨论】:
-
您的生产环境堆栈是什么?单服务器/多服务器、Apache/Nginx、Heroku?您是否使用 capistrano 进行部署并使用 capistrano 配方?您在生产中使用 config.serve_static_assets = true 吗?您是否尝试过按照 Rails 的建议通过 apache/nginx 而不是在 Rails 中处理serve_static_assets?
-
我的生产堆栈几乎是一个黑盒乘客。这是一个site5虚拟主机。我没有使用 capistrano 进行部署,而是使用 git-push && post-commit 钩子(又名 git-deploy)进行部署。
config.serve_static_assets = true已禁用。我尝试过通过 Apache 提供资产,是的。解决的很少。作为我在这里尝试解决的问题,我的 开发 环境没有像生产环境那样为我的资产提供服务。
标签: ruby-on-rails-3 asset-pipeline