【问题标题】:Rails Asset Pipeline: Return digest version when non-digest requestedRails Asset Pipeline:在请求非摘要时返回摘要版本
【发布时间】:2012-03-07 10:41:52
【问题描述】:

我正在为客户提供一个 sn-p 以粘贴到他们引用我的 application.js 文件的静态 html 中。

由于它位于我无法控制的页面上,并且我不想在每次推送版本时都要求客户更新他们的 sn-p,我想知道是否有办法返回我的digest-application.js 版本,当请求正常时确保浏览器获取的是最新版本?

我可以在脚本 src 上设置一个缓存清除时间戳,但不确定这是否真的可靠。

对处理这个问题的最佳方法有什么想法吗?

【问题讨论】:

    标签: javascript ruby-on-rails asset-pipeline


    【解决方案1】:

    我们正在为我们的“公共”javascript 做类似的事情,它被集成到第三方网络应用程序中。

    我们这样做的方法是在 capistrano 部署期间在我们的资产服务器上创建一个符号链接,该符号链接指向文件的非摘要名称。因为它们只是我们网络服务器上的文件,所以 apache 会完成其余的工作。

    【讨论】:

    • 天哪,我觉得不让 apache 处理它有点愚蠢:s 你的 cap 任务是否解析 manifest.yml 以获取要链接到的摘要文件?
    • 我记不太清了,但我认为我们放弃了这种方法,因为 manifest.yml 不包含完整路径。我们只是在寻找文件的修改时间。
    【解决方案2】:

    我认为必须优雅的方式是做一些控制器来做一些重定向 302 到你的资产。

    您可以向您的客户粘贴代码链接/public-assets/my_assets

    在您的路线中创建路线:

    match '/public-assets/:asset_name' => 'PublicAsset#index'
    

    然后创建你的控制器 PublicAssetController

    class PublicAssetContoller < ApplicationController::Base
    
      def index
        redirect_to asset_path(params[:asset_name])
      end
    
    end
    

    【讨论】:

    • 尝试你的方式,但总是很有趣:“Sprockets::Helpers::RailsHelper::AssetPaths::AssetNotPrecompiledError”,即使它是
    猜你喜欢
    • 2021-11-09
    • 2016-12-04
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多