代码之家  ›  专栏  ›  技术社区  ›  Lakota Lefler

带有RackFilter和资产的轨道

  •  0
  • Lakota Lefler  · 技术社区  · 12 年前

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

    所有这些在开发模式下都能很好地工作。当我尝试在生产模式下运行应用程序时,问题就开始了。当我执行资产:预编译时,我的资产目录结构如下所示:

    /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
    

    我试图更改我的产品.rb,以包括:

    config.assets.prefix = "public/r/assets"
    

    但仍然得到

    [WARN] 404 - GET /public/r/assets/application-3b09aaf17ec25843ede11b1160ca46ab.css
    

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

    1 回复  |  直到 12 年前
        1
  •  0
  •   Lakota Lefler    11 年前

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

    这样地:

    战争
    -资产
    -元-英寸
    -网络接口

    取而代之的是:

    战争
    -元-英寸
    -网络接口
    --公共
    ---资产