我在使用自定义RackFilter设置时遇到问题,并且能够正确定位或利用rake:生产中的预编译功能。 我的环境如下:
jruby 1.7.3
Rails 3.2.12
我使用的机架过滤器映射如下:
<filter-mapping>
<filter-name>RackFilter</filter-name>
<url-pattern>/r/*</url-pattern>
</filter-mapping>
为了利用资产管道而不使用预编译进行开发,我将以下内容添加到application.rb
config.assets.prefix = "/r/assets"
所有这些在开发模式下都能正常工作。当我尝试在生产模式下运行应用程序时,问题就开始了。当我执行资产时:预编译我的资产目录结构如下所示:
/public/r/assets
当我尝试运行应用程序时出现以下错误:
ActionView::Template::Error (application.css isn't precompiled):
指出我的方向是应用程序没有正确找到manifest.yml文件,所以我将以下内容添加到我的production.rb中:
config.assets.manifest = Rails.root.join(“public / r / assets”)
然后我收到以下错误:
[WARN] 404 - GET /r/assets/application-3b09aaf17ec25843ede11b1160ca46ab.css
我试图将我的production.rb更改为包含:
config.assets.prefix = "public/r/assets"
但仍然得到
[WARN] 404 - GET /public/r/assets/application-3b09aaf17ec25843ede11b1160ca46ab.css
所以在这一点上,我的想法已经不多了,可以使用任何建议或想法。非常感谢你!
答案 0 :(得分:0)
问题是public / assets目录需要位于war目录的根目录中,以便tomcat能够找到资产。所以现在目录结构看起来
像这样:
战
- 资产
- META-INF
- WEB-INF
而不是:
战
- META-INF
- WEB-INF
- - 公共
- - - 资产