0

我在使用自定义 RackFilter 设置并且能够在生产中正确定位或利用 rake:precompile 功能时遇到问题。我的环境如下:

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"

所有这些在开发模式下都可以正常工作。当我尝试在生产模式下运行应用程序时,问题就开始了。当我做 assets:precompile 我的 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

所以在这一点上,我的想法已经不多了,可以使用任何建议或想法。非常感谢你!

4

1 回答 1

0

问题是 public/assets 目录需要位于 war 目录的根目录中,以便 tomcat 能够找到资产。所以现在目录结构看起来

像这样:

战争
- 资产
- META-INF
- WEB-INF

而不是这个:

战争
- META-INF
- WEB-INF
- - 公共
- - - 资产

于 2013-04-04T18:04:20.697 回答