ber*_*kes 5 ruby-on-rails-3 asset-pipeline
我遇到了生产资产的一些问题:缺少的,编译成错误文件的东西(javascript为"/ admin"编译成前端代码等等).大部分资产来自发动机.我想调试和优化它.
为此,我需要在开发环境中预编译,服务和失败,就像在生产环境中完成一样.
我已经为我添加了一些代码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
Run Code Online (Sandbox Code Playgroud)
运行这个rake RAILS_GROUPS=assets RAILS_ENV=development assets:precompile
给我所有的资产和manifest.yml
in public/
.
但是服务器失败了:
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
Run Code Online (Sandbox Code Playgroud)
favicon.ico没有预编译.但它是!它位于公共目录中manifest.yml
,我可以使用浏览器(或wget)获取它:http:// localhost:3000/assets/favicon.ico.
注意 Favicon只是第一个被称为资产的资产.如果我删除了favicon,问题只是表示下一个资产,即"all.js",或者当它被剥离时,"all.css",依此类推.我可以剥离它直到"footer_bg.png",然后它就会失败.同样:问题不是favicon,而是开发环境根本看不到预编译资产的事实.
还有什么需要让开发资产管道与生产类似?
编辑:更明确的解释,图标不是问题,只是一个症状.
我最终在本地主机上安装了 apache、passenger 来排除故障。
由于静态资产服务,Apache(可能是任何可载客的服务器)。此外,在本地主机上,我可以将 apache 日志中的详细程度提高到非常高,从而为我提供足够的调试信息。
Passenger 尽可能在生产时模拟 ruby 版本和宝石加载。
在 webrick 上运行实在是太不同了,即使在尽可能接近的模拟下,它也被证明与生产堆栈有太大的不同;这就是为什么我无法重现其中的生产问题,
像生产一样启动整个堆栈让我能够排除故障。这让我得出结论,有几个问题导致了资产困境:宝石资产没有被拾取;权限问题(www-data 无法读取编译后的资产)以及一些资产未正确编译。
归档时间: |
|
查看次数: |
3180 次 |
最近记录: |