zoukankan      html  css  js  c++  java
  • Rails的静态资源管理(六)—— Asset Pipeline缓存存储方式、预处理、升级等

    官方文档:http://guides.ruby-china.org/asset_pipeline.html

    http://guides.rubyonrails.org/asset_pipeline.html

    1 静态资源文件缓存的存储方式

    在开发环境和生产环境中,Sprockets 默认在 tmp/cache/assets 文件夹中缓存静态资源文件。修改这一设置的方式如下:

    config.assets.configure do |env|
      env.cache = ActiveSupport::Cache.lookup_store(:memory_store, { size: 32.megabytes })
    end

    禁用静态资源文件缓存的方式如下:

    config.assets.configure do |env|
      env.cache = ActiveSupport::Cache.lookup_store(:null_store)
    end

     

    2 通过 gem 添加静态资源文件

    我们还可以通过 gem 添加静态资源文件。

    为 Rails 提供标准 JavaScript 库的 jquery-rails gem 就是很好的例子。这个 gem 中包含了继承自 Rails::Engine 类的引擎类,这样 Rails 就知道这个 gem 中可能包含静态资源文件,于是会把其中的 app/assetslib/assets 和 vendor/assets 文件夹添加到 Sprockets 的搜索路径中。

    3 使用代码库或 gem 作为预处理器

    Sprockets 使用 Processors、Transformers、Compressors 和 Exporters 扩展功能。下述示例注册一个预处理器,在 text/css 文件(.css)默认添加一个注释。

    module AddComment
      def self.call(input)
        { data: input[:data] + "/* Hello From my sprockets extension */" }
      end
    end

    有了修改输入数据的模块后,还要把它注册为指定 MIME 类型的预处理器:

    Sprockets.register_preprocessor 'text/css', AddComment

    4 从旧版本的 Rails 升级

    从 Rails 3.0 或 Rails 2.x 升级时有一些问题需要解决。首先,要把 public/ 文件夹中的文件移动到新位置。关于不同类型文件储存位置的介绍

    其次,要避免出现重复的 JavaScript 文件。从 Rails 3.1 开始,jQuery 成为默认的 JavaScript 库,Rails 会自动加载 jquery.js,不再需要手动把 jquery.js 复制到 app/assets 文件夹中。

    再次,要使用正确的默认选项更新各种环境配置文件。

    在 application.rb 配置文件中:

    # 静态资源文件的版本,通过修改这个选项可以使原有的静态资源文件缓存全部过期
    config.assets.version = '1.0'
    
    # 通过 onfig.assets.prefix = "/assets" 修改静态资源文件的路径

    在 development.rb 配置文件中:

    # 展开用于加载静态资源文件的代码
    config.assets.debug = true

    在 production.rb 配置文件中:

    # 选择(可用的)压缩工具
    config.assets.js_compressor = :uglifier
    # config.assets.css_compressor = :yui
    
    # 在找不到已编译的静态资源文件的情况下,不退回到 Asset Pipeline
    config.assets.compile = false
    
    # 为静态资源文件的 URL 地址生成指纹
    config.assets.digest = true
    
    # 预编译附加的静态资源文件(application.js、application.css 和所有
    # 已添加的非 JS/CSS 文件)
    # config.assets.precompile += %w( admin.js admin.css )

    Rails 4 及更高版本不会再在 test.rb 配置文件中添加 Sprockets 的默认设置,因此需要手动完成。需要添加的默认设置包括 config.assets.compile = trueconfig.assets.compress = falseconfig.assets.debug = false 和 config.assets.digest = false

    最后,还要在 Gemfile 中加入下列 gem:

    gem 'sass-rails',   "~> 3.2.3"
    gem 'coffee-rails', "~> 3.2.1"
    gem 'uglifier'
  • 相关阅读:
    Unity Find 使用规则
    Unity UGUI
    Unity UGUI
    Unity UGUI
    Unity UGUI
    机器学习:支持向量机识别手写英文字母 SMO算法实现二元分类器
    机器学习:朴素贝叶斯分类器实现二分类(伯努利型) 代码+项目实战
    机器学习:基于CART算法的决策树——分类树与回归树
    机器学习:决策树——分类树 ID3算法 代码+案例
    JAVA
  • 原文地址:https://www.cnblogs.com/zs-note/p/7053278.html
Copyright © 2011-2022 走看看