带有RackFilter和资产的Rails

时间:2013-03-20 14:59:27

标签: ruby-on-rails ruby-on-rails-3.2 asset-pipeline rack jrubyonrails

我在使用自定义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

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

1 个答案:

答案 0 :(得分:0)

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

像这样:


- 资产
- META-INF
- WEB-INF

而不是:


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