Rails 5 开发进阶
  • Rails 6 开发进阶
  • Active Model 功能模块
    • Model - 核心
      • Validations
      • Validator
      • Errors
      • Validations 相关的 Callbacks
      • Conversion
      • Naming & Name
      • Translation
      • Lint Tests
    • Model 的增强模块
      • Attribute Assignment
      • Attribute Methods
      • Dirty
      • Secure Password
      • Forbidden Attributes Protection
      • Serialization
      • Callbacks - 快速提供 3 个回调方法
    • 其它
  • Active Record 数据库操作:增删查改
    • Relation
      • Relation 文件下的方法
      • Query Methods
        • Preload, Eagerload, Includes 和 Joins 等
        • Query Methods 读取、设置查询方法
        • 关联表复杂查询示例
      • Spawn Methods
      • Batches 批量查询
      • Finder Methods
      • Calculations 统计计算
      • 其它
    • Collection Proxy
    • Scoping
    • Attribute Methods
      • Attribute Methods 文件下的内容
      • Read & Write
      • Before Type Cast - 类型转换
      • Query - 后缀 '?' 问询
      • Serialization
      • Primary Key
      • 其它
    • Persistence
      • 数据更新方法对比
      • 对比,然后使用合适的方法
      • 多个 save 方法
    • Counter Cache 计数器
    • Querying
    • 其它
  • Active Record 数据库关联关系
    • Associations 文件 - 4 个关联方法
    • Aggregations - composed_of 方法
    • Builder - 功能的实现
      • Association
      • Singular Association
      • Collection Association
      • Has One
      • Belongs To
      • Has Many
      • Has And Belongs To Many
    • Reflection - 实现之关联两者
      • Abstract Reflection
      • Macro Reflection
      • Association Reflection
      • Aggregate Reflection
      • Has Many Reflection
      • Has One Reflection
      • Belongs To Reflection
      • Has And Belongs To Many Reflection
      • Through Reflection
      • Polymorphic Reflection
      • Runtime Reflection
    • Association 目录 - 实现之提供方法
      • Association
      • Belongs To Association
      • Belongs To Polymorphic Association
      • Collection Association
      • Foreign Association
      • Has Many Association
      • Has Many Through Association
      • Has One Association
      • Has One Through Association
      • Singular Association
      • Through Association
    • 4 个关联方法的使用
      • belongs_to
      • has_one
      • has_many
      • has_and_belongs_to_many
      • 关联方法的可选参数汇总
    • 4 个关联方法的补充
      • 使用关联方法后,Rails 自动生成了哪些方法
      • habtm vs has_many through
    • Nested Attributes 嵌套属性
    • Inheritance 单表继承
    • 其它
      • Autosave Association
      • Alias Tracker
      • Association Scope
      • Join Dependency
      • Preloader
      • Association Relation
  • Active Record 数据库特性及功能模块
    • Callbacks 回调
      • 回调及其顺序
      • 跳过回调
      • 可选参数
      • after_create 与 after_commit on create 各自存在的坑
    • Transactions 事务
    • Locking 锁
    • Enum 枚举
    • Store
    • Validations 校验
    • Secure Token
    • Integration
    • No Touching
    • Touch Later
    • Attributes
    • Readonly Attributes
    • Serialization
    • Suppressor
  • Active Record 数据库迁移:表/字段
    • Connection Handling 连接数据库
    • Migration 文件下的内容
      • 控制台里迁移、回滚等命令
      • say_with_time
    • Connection Adapters
      • Schema Statements
        • create_table
        • change_table
      • Table Definition
      • Table
      • Database Statements
    • Model Schema
    • Schema
    • 其它
      • schema_format
      • Schema Migration
  • Active Record 数据库连接:底层适配,约定、配置
    • Naming Conventions
    • Schema Conventions
    • Timestamps
    • Core
      • 获取 record 对象
    • Sanitization
    • Migration DatabaseTasks
    • Statement Cache
    • Collection Cache Key
    • Attribute Mutation Tracker
    • Attribute Decorators
    • 其它
  • Action View 布局、渲染相关
    • Layouts
    • Base - 为渲染打基础
    • 非 Rails 是如何渲染的
    • Rails 是如何渲染的
      • Rendering
    • 渲染器介绍
      • Renderer - 渲染的入口
      • 基类 Abstract Renderer
      • 子类 Template Renderer
      • 子类 Partial Renderer & Collection Caching
      • 子类 Streaming Template Renderer
    • Template 内容
      • template 本文件下的内容
      • template 目录
    • Lookup Context
      • View Paths
      • Details Key & Details Cache
    • view_context
      • Context
      • Output Flow & Streaming Flow
    • View Paths
    • 其它
      • Output Buffer & Streaming Buffer
  • Action View 提供的 Helper 方法
    • 与表单直接相关的辅助方法
      • Form Builder
        • 扩展 Form Builder
      • Form Helper
      • Form Options Helper
      • Form Tag Helper
    • 与表单非直接相关的辅助方法
      • Tag Helper
      • Url Helper
      • Asset Tag Helper
      • Cache Helper
        • 片段缓存和 Cache Key
      • Controller Helper
      • Asset Url Helper
      • Csrf Helper
      • Capture Helper
      • Debug Helper
      • Date Helper
      • JavaScript Helper
      • Number Helper
      • Output Safety Helper
      • Rendering Helper
      • Record Tag Helper
      • Sanitize Helper
      • Translation Helper
      • Text Helper
      • Atom Feed Helper
      • Active Model Instance Tag
    • 其它
  • Action View 其它类和模块
    • Record Identifier
    • Routing Url For
    • Model Naming
    • Digestor
      • Dependency Tracker
    • 其它
  • Action Dispatch Http 作用:请求、响应
    • Request
      • Request 文件下的内容
      • URL
      • Headers
      • Mime Negotiation
      • Parameters
      • Parameter Filter & Filter Parameters
      • Cache 之 Request
      • Uploaded File
      • Utils
    • Response
      • Response 文件下的内容
      • Filter Redirect
      • Cache 之 Response
    • 其它
      • Rack Cache
      • Mime Type register
      • Session
  • Action Dispatch Middleware 中间件
    • Middleware
      • Rack - Ruby Web server 接口
      • 查看项目用了哪些 Middleware
      • 定制 Middleware
      • Middleware Stack
    • 各个 Middleware 类
      • Static
      • SSL
      • Show Exceptions
      • Exception Wrapper
      • Public Exceptions
        • 定制 Public Exceptions
      • Debug Exceptions
      • Request Id
      • Remote Ip
      • Reloader
      • Params Parser
      • Flash
      • Cookies & ChainedCookieJars
      • Session
      • Callbacks
      • Load Interlock
      • Executor
      • Debug Locks
  • Action Dispatch Routing 路由顶层(表现形式)
    • Mapper
      • Base
      • Http Helpers
      • Scoping
        • scope
        • namespace
      • Concerns
      • Resources
      • Scope、Mapping、Constraints
      • Redirection
      • match 和 scope 方法 - 重中之重
      • 路由常用方法汇总
    • 其它
      • Polymorphic Routes
      • Url For
      • Routing 概述:生成、存储、识别
      • 一步步分析从请求到响应涉及到 Rails 的哪些模块
      • endpoint 和 inspector 文件
  • Action Dispatch RouteSet 路由底层(实现方式)
    • 实例对象和各个实例方法
    • Named Route Collection
    • Dispatcher
    • Generator
    • Routes Proxy
    • Journey
  • Abstract Controller
    • Base
      • 获取所有的 Controller 和 action
    • Helpers
    • Callbacks
    • Rendering
    • render 参数汇总与详解
      • 更多关于渲染
    • Translation
    • Collector
    • 其它
      • Asset Paths
      • Routes Helpers
      • Logger
      • Url For
    • Caching
    • Caching & Caching Fragments
      • 默认片段缓存策略
  • Action Controller - Rack 增强扩展
    • Metal - 增强的 Rack, 简陋的 Controller
      • Metal 文件下的内容
      • Middleware Stack
      • Metal 使用举例
    • API - Metal 的继承者
    • Base - Metal 的继承者
    • Metal 的扩展
      • Redirecting
      • Head
      • Conditional Get - HTTP Cache
        • Conditional Get 其它
      • Etag With Template Digest
      • Http Authentication
        • Basic
        • Digest
        • Token
      • Streaming
      • Live
      • Mime Responds & Collector
      • Renderers 增删渲染器
      • Params Wrapper
      • Request Forgery Protection
      • Parameters & Strong Parameters
      • Data Streaming
      • Force SSL
      • Flash
      • Helpers
      • Cookies
      • Implicit Render
      • Instrumentation
      • Rendering
      • Rescue
      • Url For
      • 其它
    • 其它
      • Form Builder
      • Renderer
      • Basic Implicit Render
      • Railties Helpers
  • Active Support 扩展:autoload 的类和模块
    • Autoload
      • autoload & eager_autoload 补充
    • Lazy Load Hooks
    • Concern
    • File Update Checker
    • Notifications
      • Rails 默认已有的 instrumenter
    • Subscriber
    • Log Subscriber
      • Action Mailer Log Subscriber
      • Action Controller Log Subscriber
      • Action View Log Subscriber
      • Active Record Log Subscriber
    • Rescuable
    • Descendants Tracker
    • Dependencies
  • Active Support 扩展:eager_autoload 的类和模块
    • Cache 缓存的源头
    • Callback 方法解释及使用
    • Callbacks 底层简要分析
    • Configurable
    • Ordered Hash 和 Ordered Options
    • Inflector
    • Key Generator 和 Caching Key Generator
    • Message Encryptor 和 Message Verifier
    • String Inquirer - Rails.env.production?
    • Array Inquirer
    • Tagged Logging
    • Gzip 与 JSON
    • Backtrace Cleaner
    • Number Helper
    • Benchmarkable
    • Xml Mini
    • Multibyte
    • Deprecation
    • 其它
  • Active Support 核心扩展
    • Array
    • Benchmark
    • Big Decimal
    • Class
    • Date
    • Time
    • Date Time
    • Duration
    • Time With Zone
    • Time Zone
    • Enumerable
    • File
    • Hash
    • Hash With Indifferent Access
    • Integer
    • Numeric
    • Kernel
    • Object
    • Module
      • alias_method_chain
    • Marshal
    • Range
    • Regexp
    • Secure Random
    • String
    • URI
    • Load Error
    • Name Error
    • Logger
    • Logger Silence
  • Active Support 其它类和模块
    • Security Utils
  • railties 核心:初始化、组件化
    • Railtie
      • Railtie 文件下的内容
      • Initializable
      • Configuration
      • 定制自己的 Railtie
    • Railtie 补充
      • Rails 默认组件都是 Railtie
    • Engine
      • Engine 文件下的内容
      • Configuration
      • Engine full vs mountable
      • 定制自己的 Engine
      • 其它
    • Application
      • Application 文件下的内容
      • Bootstrap
      • Finisher
      • Configuration
      • Default Middleware Stack
      • Rails 应用启动过程
    • Application 补充
      • Routes Reloader
      • rake & rails 命令
      • rails console 里的小技巧
      • 路径 - Root 和 Path
      • 提示信息页面
    • 其它
      • Rails 文件下的内容
      • Configuration Middleware Stack Proxy
      • AppName, Application. Engine, Railtie
      • Backtrace Cleaner
      • Rack Logger
      • Generators
  • Rails Configuration 配置
    • 一般常用配置项
    • Action Mailer
    • Active Record
    • Action Controller
    • Action Dispatch
    • Action View
    • Active Support
    • I18n
    • Generators
    • Assets
    • Environments
    • 设置项补充
    • Middleware
  • Rails Generators 代码生成器
    • Thor
    • generators 下的目录、文件
    • Base
    • Actions
    • Named Base
    • 其它
      • App Base
      • Generators 文件下的内容
      • Migration
      • Active Model
      • Resource Helpers
      • Model Helpers
      • Generated Attribute
  • Action Mailer 发邮件
    • Base
      • 拦截器 register_interceptor
      • 订阅者 register_observer
    • Mail Helper
    • Message Delivery
    • 其它
      • Delivery Methods
      • Previews & Preview
      • DeliveryJob
      • Collector
  • Active Job 异步任务
    • Active Job 使用
    • Active Job 补充
  • Action Cable 封装的 WebSockets
    • 服务端 - Ruby 代码
      • Channel
      • Channel 补充
      • Connection
      • Connection 补充
      • Server
      • Server 补充
      • Remote Connections
      • Action Cable Helper
      • Subscription Adapter
      • Subscription Adapter 补充
    • 客户端 - Coffee 脚本
      • Action Cable 文件下的内容
      • Consumer
      • Subscription
      • Connection
      • Subscriptions
      • Connection Monitor
    • 一些重要的东西
    • 其它
  • Active Storage 存储功能最小实现
  • 前端 Turbolinks
  • 前端 Webpacker
  • 测试 Testing
    • Active Support
    • Active Job
    • Action Mailer
    • Action Controller
    • Action Dispatch
    • Action View
    • Generators
    • rails-dom-testing
  • 测试 MiniTest
    • Spec DSL
    • Assertions
    • Mock
    • Unit
      • TestCase
      • Lifecycle Hooks
      • Guard
    • Expectations
    • 其它
  • 测试 Factory Girl
  • rails-guides 指南
  • 其它
    • 继承心得
    • Rails 源代码里一些常用方法
    • Rails assets precompile
    • Turbolinks 产生的原因
    • Turbolinks 3
    • Turbolinks 补充
    • Turbolinks 5
  • 后记
由 GitBook 提供支持
在本页
  • 概述
  • sprockets-rails
  • 一些配置项
  • 其它
  • Debug

这有帮助吗?

  1. 其它

Rails assets precompile

概述

Assets Pipeline 主要功能 & 特性

合并、压缩、解析 css, js 文件。

合并:将多个 js 或 css 文件压缩打包成单一文件,減少 http request 的大小与数量。 压缩:可以去除空格、注释等。 解析:你可直接使用 SCSS 和 CoffeeScript, 它们会被解析成 css 和 js.

主要通过 Sprockets 完成

Assets Pipeline 的功能主要由重要的组件 Sprockets 完成。 Sprockets 用来从你的 assets 路径打包压缩你所有的 assets 后包裝成一个文件,然后放到你目的地路径(public/assets).

通过它可以对 css, js 等静态资源进行编译、压缩。

命令行取消,不使用它:

rails new appname --skip-sprockets

这会使得原来的:

require 'rails/all'

变成

require "rails"
# Pick the frameworks you want:
require "active_model/railtie"
require "active_job/railtie"
require "active_record/railtie"
require "action_controller/railtie"
require "action_mailer/railtie"
require "action_view/railtie"
# require "sprockets/railtie" # <- 重点是这行
require "rails/test_unit/railtie"

sprockets 已经被取消掉。

并且,原来的:

gem 'sass-rails'
gem 'uglifier'
gem 'coffee-rails'

变成:

gem 'coffee-rails', '~> 4.1.0'

默认的 3 个存放静态资源的地方

默认 3 路径: app/assets 放置我们自己所写的 js、css 或 images, 并且它们和业务关联比较紧密。实际上,这种形式用得最多。 lib/assets 放置我们抽取出来的 assets, 一般来说这样的代码比较通用。实际上,这种形式用得最少。 vendor/assets 是放一些我们从第三方引进的 assets,例如一些 jQuery 插件。

开发环境,你可以把你的 rails app 跑起來后,从 HTML 源代码里查看引入了那些样式或脚本,进而修改,很方便。

这 3 个目录,看似是分开的。但生产环境下,它们后会被编译、打包在一起,也就是说,它们其实是连通的。

.erb 使用 Asset Helper 方法

因为 Sprockets-rails 已经引入了以下两个模块

include ActionView::Helpers::AssetUrlHelper
include ActionView::Helpers::AssetTagHelper

所以,在 *css.erb 文件里,你都可以使用以下方法:

stylesheet_link_tag
javascript_include_tag
image_tag
asset_path
asset_data_uri

同样的,使用 js.erb 后缀之后可以用 asset_path 等方法。

使用举例:

audio_path("horse.wav")  # => /audios/horse.wav
audio_tag("sound")       # => <audio src="/audios/sound" />

font_path("font.ttf")    # => /fonts/font.ttf

image_path("edit.png")   # => "/images/edit.png"
image_tag("icon.png")    # => <img src="/images/icon.png" alt="Icon" />

video_path("hd.avi")     # => /videos/hd.avi
video_tag("trailer.ogg") # => <video src="/videos/trailer.ogg" />

sass-rails 提供的几个 Asset Helper 方法

由 sass-rails 提供几个以 -url 和 -path 结尾的 Asset Helpers 方法及结果:

image-url("rails.png") # => url(/assets/rails.png)
image-path("rails.png") # => "/assets/rails.png".

asset-url("rails.png") # => url(/assets/rails.png)
asset-path("rails.png") # => "/assets/rails.png"

asset-data-url("rails.png") # => url(data:image/png;base64,iVBORw0K...)

注意,你可以同时使用 sass-rails 提供的 -url 及原生的 url 方法;使用 -url 时参数带引号,使用 url 时参数不带引号。

Sprockets 提供 require 等指令

require # 引入某个文件。如果有重复引入,它会自动忽略,只引入一次。
require_directory # 引入某个目录下的文件,不会递归其子目录。
require_tree # 引入某个目录及递归其子目录下的所有文件,默认指的是当前目录。
require_self # 引入在自己文件里写的样式或脚本。

link

depend_on
depend_on_asset

stub

上述几个方法,由 Sprockets-rails 提供。

但上述几个方法,不要在 SASS/SCSS 文件里使用,而是使用 sass-rails 提供的 @import 方法。

根据后缀名,决定编译顺序

注意后缀名的顺序:

app/assets/javascripts/projects.js.erb.coffee

从右到左一个个解析的。

生产环境,需要注意的点

1) Precompiling Assets

RAILS_ENV=production bin/rake assets:precompile
load 'deploy/assets'

另,上述会生成、使用 shared/assets 目录。

预编译的文件,默认是:

[ Proc.new { |filename, path| path =~ /app\/assets/ && !%w(.js .css).include?(File.extname(filename)) },
/application.(css|js)$/ ]

新增:

Rails.application.config.assets.precompile += ['admin.js', 'admin.css', 'swfObject.js']

另,只使用 .js 或 .css 后缀即可。不必减少,也不必增多。

2) Far-future Expires Header

配置 Web 服务器,更好的对待静态资源:

location ~ ^/assets/ {
  expires 1y;
  add_header Cache-Control public;

  add_header ETag "";
  break;
}

CDN 及异地静态资源

把静态资源放到其它服务器:

config.action_controller.asset_host = 'mycdnsubdomain.fictional-cdn.com'

config.action_controller.asset_host = ENV['CDN_HOST']

注意其影响:

<%= asset_path('smile.png') %>

http://mycdnsubdomain.fictional-cdn.com/assets/smile.png

# 仅作用于指定的静态资源
<%= asset_path 'image.png', host: 'mycdnsubdomain.fictional-cdn.com' %>

另,如果生产环境有图片,而开发环境没有,而自己又不想导图片。可以尝试用这种方式,在开发环境也显示图片。

两种引入方式

1)独立引入

config.assets.precompile += %w( site.css )
stylesheet_link_tag "site"

2)一起引入

# application.css

// = require_self
// = require 'site'

当然了,也可以直接把文件放到 public/assets/ 目录下,之后这些文件不受 Assets precompile 影响。

sprockets-rails

Railtie

以 Railtie 的形式引入,继承于 Rails::Railtie (所以,Rails::Railtie 提供的方法,它是可以用的)

主要任务包括,但不限于:

  • 设置 config.assets.x (这里的 x 表示众多的配置项)

  • 其它众多看不见的功能

上述配置,包括但不限于:

config.assets.precompile
config.assets.paths
config.assets.version
config.assets.prefix
config.assets.manifest
config.assets.digest
config.assets.debug
config.assets.compile
config.assets.configure

打开了 Rails 下的 Engine 和 Application

Engine 主要是加入路径:

paths["vendor/assets"]
paths["lib/assets"]
paths["app"]
paths["app/assets"]

Application 主要提供以下几个 config 项:

:assets
:assets_manifest
:precompiled_assets

如何引入

它是 gem,所以:

gem 'sprockets-rails', :require => 'sprockets/railtie'

Rake task

由 Task 文件完成。

rake assets:precompile
rake assets:clean
rake assets:clobber

命令

RAILS_ENV=production bin/rake assets:precompile

将 app/assets 存放普通的前端资源复制到 public/assets 目录。

Helper

包括但不限于:

include ActionView::Helpers::AssetUrlHelper
include ActionView::Helpers::AssetTagHelper
include Sprockets::Rails::Utils

VIEW_ACCESSORS = [:assets_environment, :assets_manifest,
                  :assets_precompile, :precompiled_assets,
                  :assets_prefix, :digest_assets, :debug_assets]

一些配置项

rails scaffold 或 rails g controller 时不再生成默认的 js, css 文件

config.generators do |g|
  g.assets false
end

显性配置 css, js 压缩器

config.assets.css_compressor = :yui
config.assets.js_compressor = :uglifier
config.assets.css_compressor = :yui
config.assets.css_compressor = :sass

JavaScript Compression

:closure, :uglifier 和 :yui

分别对应

closure-compiler, uglifier 和 yui-compressor gem.

config.assets.js_compressor = :uglifier

如何新增静态资源所在路径:

如何新增:

config.assets.paths << Rails.root.join("lib", "videoplayer", "flash")

Runtime Error Checking

config.assets.raise_runtime_errors = false

没必要关掉吧。

Turning Debugging Off

config.assets.debug = false

没必要关掉吧。

Live Compilation

生产环境,实时编译。

开发、测试等环境,由 coffee-script and sass 实时编译。

反正我是不推荐:

config.assets.compile = true

生产环境 app/assets 下的文件已经预编译好,放到了 public/assets 下,直接使用即可。

CDNs and the Cache-Control Header

config.static_cache_control = "public, max-age=31536000"

Changing the assets Path

config.assets.prefix = "/some_other_path"

这也没必要吧。

Assets Cache Store

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

一般情况下,也不会动这里哈~

ssets Pipeline 怎么关掉?

你可以在 confing/application.rb 中把他关掉:

config.assets.enabled = false

其它

查看所有 assets 目录

当使用第三方 gem 引入 assets 资源的时候,使用它可以让我们看到加入了哪些目录。

Rails.application.config.assets

Note:它只管加载目录,想引入目录下面资源文件的话,还得自己或 gem 添加。

Deploy 的小技巧

1)本地编译 - 有好也有坏。反正我是不推荐。

2)如果 assets 沒有更新,就不要跑 precompile.

3) 有更新就在本地 precompile,然后再上传。

慎用 require_tree

# application.css
//= require_tree

# 相当于
//= require_tree .

意味着加载当前目录下的文件,并且递归加载其子目录下的文件。虽然省事了,这并不是好的实践。因为我们的文件、目录是会逐渐增多的。这就容易出现下列结果:

  • 加载过多,导致性能慢

  • 加载过多,导致混淆(原本没有必要加载的文件也加载了)

css & scss & sass

后缀名 .scss 意义 Sassy CSS (还有一种后缀名为 .sass 的,区别是它严格缩进)

根据原有文件后缀名,选择不同的使用方式:

# 1 application.css
*= require font-awesome
# 2 application.css.scss
@import "font-awesome";
# 3 application.css.sass
@import font-awesome

检测 assets 是否挂了(存在)的命令

图片"rails.png"存在

Rails.application.assets.find_asset 'rails.png'
=> #<Sprockets::StaticAsset:0x3fed3aa004f8 
pathname="/Users/kelby/appname/app/assets/images/rails.png",
mtime=2015-04-13 20:10:42 +0800, digest="3526faae1dacebb591431f0054e8f33e">

图片"not-image.png"不存在

Rails.application.assets.find_asset 'not-image.png'
 => nil

没有 JavaScript 运行时

group :production do
  gem 'therubyracer'
end

但不推荐这么做,还是安装的好。

X-Sendfile Headers

Web 服务器支持的话,不妨一试:

# config.action_dispatch.x_sendfile_header = "X-Sendfile" # for Apache
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX

当你使用 send_file 等方法给客户端发送文件时,如果你开启了此特性,并且硬盘里有恰好又有此文件。那么,你的 Web服务器会忽略应用的响应数据,直接从硬盘读取文件并返回,使得速度更快。

不好的实践

以 controller 为单位加载资源

<%= javascript_include_tag params[:controller] %>
<%= stylesheet_link_tag params[:controller] %>

在我看来,上述方式并不好。

CSS 里引入图片、字体需注意

使用 css,特别是第三方样式的时候,注意查看是否引入了图片、字体,它们使用 url 引用,以及路径是否准确。

Debug

Rails.application.config.assets

查看资源情况。

它属于:

Rails.application.config.assets.class
=> Sprockets::Railtie::OrderedOptions

我们接触比较多的是其中的 paths 和 precompile 对应的数据。

上一页Rails 源代码里一些常用方法下一页Turbolinks 产生的原因

最后更新于5年前

这有帮助吗?