在生产模式下,Rails似乎无法从asset管道中找到任何预编译的asset。
我在CentOS的RVM内部使用rails 3.2.0和ruby 1.9.3。没有额外的网络服务器与此应用程序结合运行。
运行后
rake assets:clean
rake assets:precompile
然而在运行时,这是我看到Rails尝试提供的:
Started GET "/assets/application-892c6227e631daf9a8e041b1d4d002ec.css" for 75.149.58.169 at 2012-03-14 11:42:43 -0700
ActionController::RoutingError (No route matches [GET] "/assets/application-892c6227e631daf9a8e041b1d4d002ec.css"):
所有对asset的引用如下所示:
//css:
.class {
background: url(asset.png) no-repeat;
}
//erb:
<%= image_tag "asset.png" %>
<%= link_to "page", :class => "class" %>
production.rb中的相关设置:
config.serve_static_assets = false
config.assets.enabled = true
config.assets.compress = true
config.assets.debug = false
config.assets.compile = false
config.assets.digest = true
application.rb的设置:
config.assets.enabled = true
config.assets.version = '1.0'
发布于 2018-04-12 14:43:55
似乎
config.serve_static_assets = false
只要Rails应用程序不在Apache或nginx后面运行,就是一个不正确的设置
发布于 2018-04-12 16:15:03
我遇到了同样的问题,但我注意到你的样式表指向文件的非指纹非缓存版本。如果正在使用asset管道,为了利用它,需要使用指向文件的指纹缓存版本的帮助程序。要做到这一点,你需要将erb嵌入到你的css文件中,或者使用sass。
正确(使用sass):
.class
background: image-url('asset.png') no-repeat
参阅此处:guides.rubyonrails.org/asset_pipeline.html#coding-links-to-assets
https://stackoverflow.com/questions/-100003867
复制相似问题